当前位置: 首页 > 知识库问答 >
问题:

Selenium:在动态加载网页中滚动到页面末尾

田昊天
2023-03-14

我有一个网页,不断加载新项目时,向下滚动页面,直到每个项目都加载。

我正在使用Java中的Selenium,需要向下滚动到页面底部才能加载所有内容。

我尝试了几种不同的选项,比如滚动到页面底部的某个元素:

WebElement copyrightAtEndOfPage = webDriver.findElement(By.xpath("//a[@href='/utils/copyright.html']"));
((JavascriptExecutor) webDriver).executeScript("arguments[0].scrollIntoView();", copyrightAtEndOfPage);

这只是向下滚动一次,然后网页继续加载。

我也尝试过这种方法,它也只向下滚动一次,因为它只考虑了浏览器的高度。

任何帮助都非常感谢。

共有3个答案

丁钟展
2023-03-14

对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();
}
孙言
2023-03-14

多亏了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();
}
宋景福
2023-03-14

我将为此提供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)") 如何确定垂