我有一个网页,不断加载新项目时,向下滚动页面,直到每个项目都加载。
我正在使用Java中的Selenium,需要向下滚动到页面底部才能加载所有内容。
我尝试了几种不同的选项,比如滚动到页面底部的某个元素:
WebElement copyrightAtEndOfPage = webDriver.findElement(By.xpath("//a[@href='/utils/copyright.html']"));
((JavascriptExecutor) webDriver).executeScript("arguments[0].scrollIntoView();", copyrightAtEndOfPage);
这只是向下滚动一次,然后网页继续加载。
我也尝试过这种方法,它也只向下滚动一次,因为它只考虑了浏览器的高度。
任何帮助都非常感谢。
对Johannes代码进行了一些更新,使其具有功能。
JavascriptExecutor js = (JavascriptExecutor) driver;
try {
long lastHeight=((Number)js.executeScript("return document.body.scrollHeight")).longValue();
while (true) {
((JavascriptExecutor) driver).executeScript("window.scrollTo(0, document.body.scrollHeight);");
Thread.sleep(2000);
long newHeight = ((Number)js.executeScript("return document.body.scrollHeight")).longValue();
if (newHeight == lastHeight) {
break;
}
lastHeight = newHeight;
}
} catch (InterruptedException e) {
e.printStackTrace();
}
多亏了Ratmir Asanov(见上面批准的答案),我将Python代码翻译成Java,以便其他人更容易实现。
try {
long lastHeight = (long) ((JavascriptExecutor) webDriver).executeScript("return document.body.scrollHeight");
while (true) {
((JavascriptExecutor) webDriver).executeScript("window.scrollTo(0, document.body.scrollHeight);");
Thread.sleep(2000);
long newHeight = (long) ((JavascriptExecutor) webDriver).executeScript("return document.body.scrollHeight");
if (newHeight == lastHeight) {
break;
}
lastHeight = newHeight;
}
} catch (InterruptedException e) {
e.printStackTrace();
}
我将为此提供Python代码。我认为很容易翻译成Java:
def scroll_down(self):
"""A method for scrolling the page."""
# Get scroll height.
last_height = self.driver.execute_script("return document.body.scrollHeight")
while True:
# Scroll down to the bottom.
self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# Wait to load the page.
time.sleep(2)
# Calculate new scroll height and compare with last scroll height.
new_height = self.driver.execute_script("return document.body.scrollHeight")
if new_height == last_height:
break
last_height = new_height
希望它能帮助你!
问题内容: 我有一个网页,当向下滚动页面直到每个项目都被加载时,它会不断加载新项目。 我正在使用Java中的Selenium,需要向下滚动到页面底部才能加载所有内容。 我尝试了几种不同的选项,例如滚动到页面底部的元素: 不过,这只会向下滚动一次,然后网页会继续加载。 我也尝试过这种方法,该方法也只能向下滚动一次,因为它只考虑了浏览器的高度。 非常感谢您的帮助。 问题答案: 我将为此提供Python
我正在尝试滚动到一个页面的末尾,这样我就可以使所有的数据可见并提取出来。我试图为它找到一个命令,但它在java(driver.executescript)中可用,但在Python中找不到。现在我正在让电脑按下end键上千次: 我还尝试了,但它会滚动到加载页面的末尾,与end键所做的相同。一旦在页面底部,下一个内容加载。但现在它不再滚动了。 我知道会有一个很好的替代方案。 如何在Python中使用s
问题内容: 我试图滚动到页面的末尾,以便可以显示所有数据并将其提取。我试图为它找到一个命令,但是它在Java(driver.executeScript)中可用,但是找不到python。现在我正在使计算机按结束键数千次: 而且我也尝试过,但是它滚动到加载页面的末尾,并且END键也一样。一旦位于页面底部,将加载下一个内容。但是现在它不再滚动了。 我知道会有一个非常不错的选择。 如何在Python中使用
在本节中,您将学习如何向下或向上滚动以显示网页上显示的其他信息。 让我们来看看下面一个测试用例,它将自动化以下场景: 调用Firefox浏览器 打开URL - www.yiibai.com 向下滚动网页以显示其它页面部分 我们将逐步创建测试用例,以便您完全了解如何使用JavaScript的“scrollBy”方法滚动网页。 第1步 - 启动Eclipse IDE并打开在本教程前几节中创建的测试套件
问题内容: selenium: 我是WebDriverJS的新手。我已经在Java中尝试了这种方法。 但是我在循环时遇到了webdriverjs中的问题。 在我的代码中, 我对循环进行了硬编码,直到50次为止,并且要在达到滚动高度结束时退出/中断循环 。在这种方法中,我想删除诸如Java代码之类的硬代码,因为 我不知道对于滚动不断增加的其他应用程序要迭代多少次 。例如,Facebook应用程序,Y
我正在抓取这个网页的用户名,在滚动后加载用户 指向页面的Url:“http://www.quora.com/Kevin-Rose/followers" 我知道页面上的用户数(本例中的用户数为43812),如何滚动页面直到加载所有用户?我在互联网上搜索过同样的代码,在任何地方我都能找到几乎相同的代码行: driver.execute_script("window.scroll至(0)") 如何确定垂