java - 如何向下滚动页面直到出现所有 View ?

标签 java selenium junit

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

最佳答案

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

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

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

您按下 PgDn 按钮并检查滚动顶部。您需要在每个 PgDn 之后等待一秒钟,因为渲染滚动可能需要一些时间,并且您需要滚动顶部已经正确。一旦前一个和当前的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);

关于java - 如何向下滚动页面直到出现所有 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44360658/

相关文章:

java - 子类测试中的 JUnit4 NullPointerException,重写方法

java - 如何生成随机码并检查它是否存在于数据库中

javascript - E2E 测试 - WebdriverJS、Selenium 和 Jasmine

python - Django : Connection refused to live_server_url

java - 如何为本类(class)编写单元测试

junit - 为 spock 创建自定义测试规则

java - 如何在 @Component 构造函数中使用 @Inject ed Spring Environment

Java泛型推理太宽泛?

java - 这道题中增量和加法的区别?

python - 如何修复tiktok selenium机器人检测