我在快速浏览几个相似但不相同的页面的应用程序中使用FirefoxDriver。为了加速执行(我需要使用FF),我将webdriver.load.strategy属性设置为'unstable'。这确实通过不完全加载页面来加快速度,但是我发现了一个非常奇怪的错误。FirefoxDriver webdriver.load.strategy不稳定的findelements从错误页面获取元素
在检查与页面和其上的数据列表中的文件,我发现一些网页进行匹配了错误的数据。当我调试时,一切都正常工作,但一旦我让程序运行几页,它就开始从错误的页面再次获取数据。 (为了澄清,例如,如果我做了driver.get(www.google.com)
,其次为driver.get(www.stackoverflow.com)
,然后做driver.findElements()
拿到StackOverflow上的网页标题,它将返回“谷歌”)。
当密切关注浏览器中运行,但在我看来,有是url框中的url和实际显示的页面之间的不匹配。网页的变化比页面快得多。我怀疑发生了什么事情是驱动程序没有等到页面完全加载之后再调用findElements,因此从前一页获取具有相同类名称的元素。
这使得给予什么webdriver.load.strategy“稳定”是应该做的,但我设置一个等待页面上的元素,它似乎并没有在等待着某种意义。是否因为每个页面都有相同的元素,所以元素已经可见了?我不能在别的等待,因为所有的页面有相同的设置 - 这只是个别文字是不同的,我不知道这是什么将提前。
有没有人遇到过这个问题?我对导致问题的假设是否正确?除了消除不稳定负载策略之外,我还能做些什么吗?
感谢, BSG 编辑 我加入一些代码,即使代码完美的作品时webdriver.load.strategy“稳定”未设置。
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的元素。
这看起来像一个示例代码,那么你为什么不张贴在这里? –
你在等什么?这似乎是真正的问题。 –