javascript - 如何使用 Java + Selenium WebDriver 移动到动态页面的底部
问题描述
我正在尝试获取完全动态的页面中的行数。我有以下代码可以这样做。但它在一定程度上滚动并且仅获取元素的部分计数。无法在页面底部找到任何元素,因为它是动态元素。我该如何解决这个问题?
List<WebElement> elements = driver.findElements(By.xpath(NoOfAssets));
Actions a = new Actions(driver);
a.moveToElement(elements.get(elements.size() - 1)).clickAndHold().moveByOffset(0, 1000000000).release().perform();
int noOfAssets = elements.size();
System.out.println(noOfAssets);
它只返回 40 行。但实际上还有更多行。我想在加载行时将光标拖到页面底部,然后获取大小。
解决方案
您需要到scroll down
页面末尾然后找到。elements
但是您可以使用sendKeys
方法向下滚动页面。尝试以下代码。让我知道它是如何进行的。
JavascriptExecutor js = (JavascriptExecutor)driver;
while(true){
Long height=(Long) js.executeScript("return document.body.scrollHeight");
System.out.println(height);
Thread.sleep(1000);
driver.findElement(By.tagName("body")).sendKeys(Keys.END);
if (height==0)
{
break;
}
}
推荐阅读
- python - 使用 Chaquopy 安装 TensorFlow 时出现“读取超时”
- wpf - WPF 为 TabItem ContentTemplate 动态设置上下文
- node.js - 如何让我的机器人在 Discord 频道 Discord.js 上设置慢速模式
- javascript - WordPress 和 PHP 中的 JavaScript 内部
- r - 在 R 中优化具有多个参数的自定义函数
- php - 即使站点不存在,我也总是收到 301 HTTP 标头代码(PHP)
- javascript - 如何使用 window.print() 函数仅打印 Iframe 之外的 DOM 内容
- reactjs - React 在通过 props 时的行为与其他 props 命名相同
- foreach - forEach() 使用 ASYNC AWAIT 迭代太快 - 跳过数据
- javascript - AngularFire2/Rxjs 使用 rxjs 进行“嵌套订阅”的正确方法?