【问题标题】:How to scroll down the page till bottom(end page) in the Selenium WebDriver如何在 Selenium WebDriver 中向下滚动页面直到底部(结束页面)
【发布时间】:2017-08-16 09:57:33
【问题描述】:

我需要在 Selenium WebDriver 中向下滚动页面直到结束。我尝试使用以下代码 sn-p 向下滚动页面:

JavascriptExecutor jse6 = (JavascriptExecutor) driver;
jse6.executeScript("window.scrollBy(0,250)", "");

它正在滚动,但我需要向下滚动到最后一页。

【问题讨论】:

  • @JeffC 我相信这是一个独特的问题,因为它询问如何滚动到页面的绝对末尾,这与向上或向下滚动不同。
  • @JonathanBenn 如果您查看有关该问题的所有各种答案,其中一些会显示如何向下滚动到页面末尾,例如user3472488 的回答等等。
  • @JeffC 我同意答案有共同点,但问题不同。 :) 我想我的意思是搜索如何向下滚动到页面底部的人会很容易找到这个问题,但不一定是the one to which you've linked。因此,这个问题本身就有价值。
  • @JonathanBenn 您可以随心所欲地使用它,但基本问题是完全相同的并且具有相同的答案。我链接的问题有几个答案可供您选择。我不确定为什么在提出这个问题两年后我们还要进行这次讨论,而我的评论最初是发表的......

标签: selenium selenium-webdriver


【解决方案1】:

我们必须使用JavascriptExecutor

使用坐标滚动

((JavascriptExecutor) driver).executeScript("window.scrollBy(0,500)");

滚动到页尾

((JavascriptExecutor) driver)
     .executeScript("window.scrollTo(0, document.body.scrollHeight)");

滚动到任意元素

((JavascriptExecutor) driver).executeScript(
            "arguments[0].scrollIntoView();", element);

【讨论】:

  • 请不要回答已经回答的问题。将它们标记或标记为重复项,以便清理它们。
  • 如何在没有给定元素 xpath 或位置的情况下滚动到底部?
【解决方案2】:

为此,您可以手动获取页面末尾任何对象的 xpath。并使用以下代码。

WebElement lastElement = 
driver.findElement(By.xpath("//a[@title='org.apache.spark download']"));
int y = lastElement.getLocation().getY();
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("window.scrollTo(0,"+y+")");
Thread.sleep(3000);

【讨论】:

  • 不仅Thread.sleep() 是不必要的,您还要添加 3 秒的暂停吗?糟糕的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-10
  • 2012-08-30
  • 2018-10-02
  • 2013-01-19
相关资源
最近更新 更多