我正在开发一个具有基于 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)