【问题标题】:How to scroll down a page until all the views appeared?如何向下滚动页面直到出现所有视图?
【发布时间】:2017-06-05 01:49:29
【问题描述】:

在我的页面中,我有很多数据。第一次打开页面时,我只能看到数据数量。当我向下滚动页面时,其他数据开始出现。它在反复进行。问题是我想查看页面中的所有数据并取他们的名字,但是当我使用List <WebElement> listItems=driver.findElement(AAA).findElements(BBB);this 代码时,我只能从第一页获取数据。我怎样才能看到其他人? (我不想在底部使用 id 或类。滚动直到看到它)

【问题讨论】:

  • 我认为这实际上可能是我作为链接附加的帖子的副本,该链接详细介绍了滚动解决方案,以便元素实际出现。 Click here for the question
  • 但是这个答案是在寻找一个特定的元素。我想查看所有元素并向下滚动直到没有人离开。 @Wunderbread
  • 啊,原来如此。如果我自己设计测试,我会将自动化烘焙到页面中并在底部设置一个 ID 并设置 selenium 以选择该 ID,以便扩展页面以显示所有元素。我继续投票了一个我认为在这篇文章中对你有帮助的答案。

标签: java selenium junit


【解决方案1】:

嗯,你当然可以滚动到底部。最简单的方法是使用 JavaScript 查看滚动高度并滚动到它:

JavascriptExecutor jse = (JavascriptExecutor) driver;
Long scrollHeight = (Long) jse.executeScript("return document.scrollHeight;");
jse.ExecuteScript("document.scrollTop="+scrollHeight);

但是,这仅适用于页面已经具有正确高度的滚动条。如果它没有立即完全渲染,则滚动高度可能不正确。有一种方法可以解决这个问题,但我从未尝试过使用页面,只有表格。

您按下 PgDn 按钮并检查 scrollTop。您需要在每个 PgDn 之后等待一秒钟,因为渲染滚动可能需要一些时间,并且您需要 scrollTop 已经正确。只要上一个和当前的 scrollTop 相同,就完成了。

我没有亲自尝试过我这里使用的按 PgDn 的方法。我只是将它发送到这里的 body 元素。另一种方法是使用操作。

JavascriptExecutor jse = (JavascriptExecutor) driver;
WebElement body = driver.findElement(By.tagName("body"));
String prevTop ="-1";
boolean continueScrolling = false;
do {
    body.sendKeys(Keys.PAGE_DOWN);
    Thread.sleep(1000); // you might need to add handling for InterruptedException
    String currentTop = String.valueOf(jse.executeScript("return document.scrollTop;"));
    continueScrolling = !currentTop.equals(prevTop);
    prevTop = currentTop;
} while (continueScrolling);

【讨论】:

    【解决方案2】:

    你可以像这样执行一个javascript代码:

    WebElement element = driver.findElement(By.id("id_of_element"));
    ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element);
    
    //do anything you want with the element
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-16
      • 2015-01-19
      • 1970-01-01
      • 1970-01-01
      • 2018-09-15
      • 1970-01-01
      • 2017-07-02
      • 1970-01-01
      相关资源
      最近更新 更多