自从更新到木偶车手以来。 Firefox不再等待。 基本上我希望它登录,等待页面加载然后通过在页面上找到“注销”来检查它是否登录。这是我的设置
// navigate to url "http://..."
// Find Log In button and .Click()
WebDriverWait wait = new WebDriverWait(driver, System.TimeSpan.FromSeconds(30));
wait.Until(driver1 => ((IJavaScriptExecutor)driver).ExecuteScript("return document.readyState").Equals("complete"));
// Assert if the page contains "Log out"
正在发生的事情是它点击登录后,它不是在等待页面加载所以它会抛出错误,因为它找不到“退出”
我强调该代码适用于较旧的Firefox驱动程序(非Marionette)以及Chrome的驱动程序。其他任何人遇到新Firefox驱动程序的问题没有等待吗?
抱歉,我应该更清楚,Firefox驱动程序没有做任何等待,所以等待现有的元素也无法正常工作
答案 0 :(得分:0)
你的测试失败的原因是Jonny在评论中所说的。您正在等待登录操作后立即准备页面,该登录操作已经“准备就绪”,因为您刚刚与它进行了交互。你想要做的是对log off元素进行隐式等待。这可以通过几种不同的方法来完成。
wait.Until(ExpectedConditions.ElementExists(By.XPath(xpath)));
wait.Until(ExpectedConditions.ElementExists(By.CssSelector(csspath)));
其中任何一个都会在页面上执行隐式等待,等待最多30秒(在wait元素中定义),以便找到注销元素。