I use the below waitTillPageLoad method for any click event so that the next step does not fail. This works for the first few events but throws an exception in line
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" />
This was working fine for about two years until last week when my chrome browser was updated to 76.0.3809.100. When I use Firefox, this seems to work. However, our team would like to use Chrome for long term. One of my team member still uses an older chrome/chromedriver version and this is working fine.
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)