在我的页面中有大量数据。第一次打开页面时,我只能看到一些数据。当我向下滚动页面时,其他数据开始出现。如此反复进行。问题是我想查看页面中的所有数据并获取它们的名称,但是当我使用 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/