【发布时间】:2016-08-09 17:27:07
【问题描述】:
自从更新到 Marionette 驱动程序。 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 驱动程序没有进行任何等待,因此等待现有元素也不起作用
【问题讨论】:
-
那你为什么不等待注销按钮而不是等待readyState??
-
请提供更多您正在使用的代码、登录和注销按钮的 HTML 以及您遇到的错误。
-
我可以提供更多代码,但目前不能。正如我所说,旧的 Firefox 驱动程序和 chrome 驱动程序可以工作并且会等待,所以假设木偶的工作方式相同,那么如果它适用于其他驱动程序,我的代码应该是正确的
-
@JeffC - 错误是它没有找到“注销”所以断言失败但它失败的唯一原因是因为它没有等待页面在单击登录后重新加载,它仍在登录页面上时试图立即找到“注销”
-
阅读这个?可能是同样奇怪的问题.. stackoverflow.com/questions/27114626/…
标签: c# selenium firefox wait firefox-marionette