最近研究点击淘宝商品底部 点击“下一页”问题。今天经网友指导得解,感谢网友且听风吟和燊!
分析原因:没加载上和定位问题
解决思路:用js将浏览器滚动到底部,等待加载完,再进行点击
解决代码:
package wxLinkParaser; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; public class click { public boolean click(){ System.getProperties().setProperty("webdriver.chrome.driver", "C:/Program Files (x86)/Google/Chrome/Application/chromedriver.exe"); WebDriver webDriver = new ChromeDriver(); try{ webDriver.get("http://list.taobao.com/itemlist/default.htm?cat=50000671&viewIndex=1&as=0&atype=b&style=grid&same_info=1&isnew=2&tid=0&_input_charset=utf-8"); try{ Thread.sleep(5000); // 等待浏览器加载 } catch (InterruptedException e) { e.printStackTrace(); } webDriver.manage().window().maximize(); // 使浏览器窗口最大化 //js代码 String js1 = "return document.documentElement.scrollHeight;"; // 滑动条的位置值 String js2 = "scroll(0,10000);"; ((JavascriptExecutor)webDriver).executeScript(js2);//执行js代码,返回浏览器滚动高度 try{ Thread.sleep(3000); //等待浏览器加载 } catch (InterruptedException e) { e.printStackTrace(); } ((JavascriptExecutor)webDriver).executeScript(js1);//执行js代码,滚动10000像素 try{ Thread.sleep(3000); // wait for web loading } catch (InterruptedException e) { e.printStackTrace(); } WebElement Whref = webDriver.findElement(By.cssSelector("a.J_Ajax.btn.next"));//得到要点击的“下一页”链接 Whref.click();//进行点击 //webDriver.close();这句先注视掉,以便观察结果 return true; }catch(org.openqa.selenium.NoSuchElementException ex){ System.out.println("找不到要的下一页链接!"); //webDriver.close();这句先注视掉,以便观察结果 return false; } } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub click c = new click(); if(c.click()){ System.out.println("点击成功!"); } } }