Java Selenium将加载完整的网站

Java Selenium将加载完整的网站,java,javascript,jquery,html,selenium,Java,Javascript,Jquery,Html,Selenium,有一个网站列出了前20个项目,如果我向下滚动,它会加载下20个项目。比如说,如果网站要列出100个项目,那么我必须向下滚动到最后一个项目5次,才能列出所有100个项目 我使用java中的selenium来获取网页,但它只获取前20个项目。我希望它加载页面中的所有项目,并获取页面的html 在显示了大约100个项目之后,页面生成了一个div,其作用类似于下面的show <div id="show-more-results" class="dont-show"> Show more

有一个网站列出了前20个项目,如果我向下滚动,它会加载下20个项目。比如说,如果网站要列出100个项目,那么我必须向下滚动到最后一个项目5次,才能列出所有100个项目

我使用java中的selenium来获取网页,但它只获取前20个项目。我希望它加载页面中的所有项目,并获取页面的html

在显示了大约100个项目之后,页面生成了一个div,其作用类似于下面的show

 <div id="show-more-results" class="dont-show">
 Show more results
 </div>
代码的最后一行现在不起作用。ie
driver.findElement(By.id(“显示更多结果”))。单击()

使用的url:

http://www.flipkart.com/mobiles/micromax~brand/pr?p%5B%5D=sort%3Dprice_asc&sid=tyy%2C4io&ref=d92e01d2-38f2-46bb-82be-752e93e9ce88

有什么帮助吗?

您需要调用
window.scrollBy()
javascript函数:

JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("window.scrollBy(0, 3000)", "");
并且,您可能希望在循环中多次执行此操作:

JavascriptExecutor jse = (JavascriptExecutor)driver;
for (int i = 0; i < 5; i = i + 1) {
    jse.executeScript("window.scrollBy(0, 3000)", "");
    Thread.sleep(1000L);  // needed to wait for the page load
}
JavascriptExecutor jse=(JavascriptExecutor)驱动程序;
对于(int i=0;i<5;i=i+1){
jse.executeScript(“window.scrollBy(03000)”,“”);
Thread.sleep(1000L);//需要等待页面加载
}
试试这个:

WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("window.scrollBy(0,250)", "");
//or
//scroll down
jse.executeScript("scroll(0, 250);");
//scroll up
jse.executeScript("scroll(0, -250);");

当您向下滚动时,页面可能会向服务器发出另一个请求,因此您可能必须找到该请求URL和帖子正文(如果有)并重新创建它。这有意义吗?你说的“现在不工作”是什么意思?是否未执行单击?例外?然后你可视化地执行脚本这个“显示更多结果”按钮出现了?你能分享实际使用的url吗?找到上面的url…现在修改问题。。。看看你是否能帮忙。@user2186465你确定,在搜索的时候有一个按钮?是的,我确定…如果你愿意,我可以分享屏幕截图…它是在从顶部加载了四页之后出现的…用chrome驱动程序运行程序,看看它可以在scrollBy的帮助下列出所有198项…你能看到按钮吗???@user2186465添加
Thread.sleep(3000L)在循环之后和找到按钮之前帮助?请帮助修改问题。
WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("window.scrollBy(0,250)", "");
//or
//scroll down
jse.executeScript("scroll(0, 250);");
//scroll up
jse.executeScript("scroll(0, -250);");