我对任何点击事件都使用以下waitTillPageLoad方法,以便下一步不会失败。这适用于前几个事件,但在行中引发异常
wait.Until(
wd => js.ExecuteScript("return document.readyState").ToString() == "complete").
<package id="Selenium.Support" version="3.141.0" targetFramework="net452" />
<package id="Selenium.WebDriver" version="3.141.0" targetFramework="net452" />
<package id="Selenium.WebDriver.ChromeDriver" version="76.0.3809.68" targetFramework="net452" />
这在大约两年内工作良好,直到上周我的 chrome 浏览器更新到 76.0.3809.100。当我使用Firefox时,这似乎有效。但是,我们的团队希望长期使用 Chrome。我的一个团队成员仍然使用较旧的chrome/chrome驱动程序版本,这工作正常。
public void waitTillPageLoad()
{
try
{
int waitTime = 45;
Thread.Sleep(200);
var js = (IJavaScriptExecutor)driver;
var wait = new WebDriverWait(driver, new TimeSpan(0, 0, waitTime));
wait.Until(wd =>
js.ExecuteScript("return document.readyState").ToString() == "complete");
driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(waitTime);
}
catch (WebDriverException ex)
{
Console.WriteLine("Webpage did not load for the specified time " + ex);
}
}
Webpage did not load for the specified timeOpenQA.Selenium.WebDriverTimeoutException: script timeout
(Session info: chrome=76.0.3809.100)
at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.Remote.RemoteWebDriver.ExecuteScriptCommand(String script, String commandName, Object[] args)
at OpenQA.Selenium.Remote.RemoteWebDriver.ExecuteScript(String script, Object[] args)
at Extensions.GlobalDriver.<>c__DisplayClass32_0.<waitTillPageLoad>b__0(IWebDriver wd) in <<FilePath>>:line 345
at OpenQA.Selenium.Support.UI.DefaultWait`1.Until[TResult](Func`2 condition)
这是因为新的 chrome 浏览器版本。尝试将更新的 chrome 驱动程序与新的 chrome 浏览器版本配合使用。
我在 76 版 Chrome 更新中遇到了类似的问题,即使安装兼容的 chromedriver 版本也无法修复。我能够通过更新到最新的硒版本来纠正我的问题。在撰写本文时,这是 3.141.0。进行该更改后立即工作。