我在一个应用程序中使用 FirefoxDriver,该应用程序可以快速浏览几个相似但不相同的页面。为了加快执行速度(我需要使用 FF),我将 webdriver.load.strategy 属性设置为“不稳定”。这确实通过不完全加载页面来加快速度,但我发现了一个非常奇怪的错误。
在检查包含页面列表及其数据的文件时,我发现某些页面与错误的数据匹配。当我调试时,单步执行时一切正常,但只要我让程序运行几页,它就会再次开始从错误的页面获取数据。(澄清一下,例如,如果我执行 a driver.get(www.google.com)
,driver.get(www.stackoverflow.com)
然后执行 ,然后执行driver.findElements()
获取 StackOverflow 的页面标题,它将返回“Google”。)
仔细观察浏览器的运行情况,我发现 url 框中的 url 与实际显示的页面不匹配。网址的变化比页面快得多。我怀疑正在发生的事情是驱动程序在调用 findElements 之前没有等到页面完全加载,因此从前一页获取具有相同类名的元素。
考虑到 webdriver.load.strategy 'stable' 应该做什么,这是有道理的,但是我在页面上的一个元素上设置了等待,它似乎并没有在等待。难道是因为每个页面都有相同的元素,所以元素已经可见?我等不及其他任何事情了,因为所有页面都有相同的设置——只是个别文本不同,而且我不知道那会是什么。
有没有人遇到过这个问题?我对导致问题的原因的假设是否正确?除了删除不稳定的负载策略之外,我能做些什么吗?
谢谢,bsg 编辑 我正在添加一些代码,即使在未设置 webdriver.load.strategy 'stable' 时代码运行良好。
for(String url : urllist)
{
driver.get(url);
WebElement header = (new WebDriverWait(driver, 10).until(ExpectedConditions.presenceOfElementLocated(By.tagName("h1")));
elements = driver.findElements(By.className(elementclassname));
}
请注意,每个页面上有一个 h1 和几个带有 class=elementclassname 的元素。