selenium - 使用 Selenium Web Driver 测试动态加载的内容

标签 selenium webdriver selenium-webdriver gui-testing

我正在开发一个具有基于 Web 的前端的系统,我正在使用 Selenium 对其进行测试。在一页上,向下滚动时会动态加载内容(也许您从 Facebook 的好友列表中知道这一点),因为这是要求之一。

通过 Javascript 使用 Selenium Webdriver 向下滚动(我使用 Chrome)应该没有问题。但是动态添加的内容有一个问题。如何让 Webdriver 找到这些元素?

我尝试了以下操作来向下滚动,直到不再加载任何内容:

int oldSize = 0;
int newSize = 0;
do {
  driver.executeScript("window.scrollTo(0,document.body.scrollHeight)");
  newSize = driver.findElementsBy(By.cssSelector("selector").size();
} while(newSize > oldSize);

但是,尽管页面第一次向下滚动并且现在某些内容已正确加载,但驱动程序的 findElementsBy(By) 函数将无法找到它们。

有人遇到过这个问题吗?如果有人能帮助我找到解决方案,我将非常高兴!

问候,本杰明

最佳答案

我建议将 WebDriverWait 与 ExpectedConditons 一起使用。

//scroll down with Javascript first
WebDriverWait wait = new WebDriverWait(driver, 30);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("selector")));
//interact with your element
element.click()

看看Selenium官方页面提供的指导: http://seleniumhq.org/docs/04_webdriver_advanced.html

关于selenium - 使用 Selenium Web Driver 测试动态加载的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12692172/

相关文章:

java - 如何在 selenium 中处理 SafariDriver 的警报?

python - 从此表中获取数据 html python

ruby - Watir webdriver 鼠标悬停(悬停)- Firefox Chrome IE 之间的区别

javascript - selenium-webdriver npm 检测成功链接点击

Java (Selenium) - 用于初始化子类的父类(super class)构造函数

java - 如何让 Selenium 等到特定位置的文本

python - 设置 selenium 以与 Internet Explorer 一起使用

java - 通过迭代表比较表中的值并选择该特定值前面的复选框

python - 使用 Splinter 填写密码表单

java - 如何有效改变WebDriver对象的浏览器名称?