我尝试创建一个等待页面加载javascript
的方法,但我遇到了错误。可能我没有正确使用这种方法。
public static void WaitForLoad(this IWebDriver driver, int timeoutSec = 15)
{
WebDriverWait wait = new WebDriverWait(driver, new TimeSpan(0, 0, timeoutSec));
wait.Until(wd => wd.ExecuteJavaScript("return document.readyState") == "complete");
}
错误是:
The type arguments for method 'WebdriverExtensions.ExecuteJavaScript<T>(IWerbDriver,string,params object[]' cannot be inferred from the usage.Try specifying the type arguments explicity)
答案 0 :(得分:2)
在WaitForLoad(...)
功能中,您正在检查("return document.readyState") == "complete"
实际上,对函数WaitForLoad(...)
的调用纯粹是一个过载而没有实际效果。这是因为 Selenium DLL / JARS / Modules 的设计方式是webdriver
仅在您使用的浏览器时才执行下一行代码将document.readyState == "complete"
发送到 WebDriver 。
在您的情况下,如果我们等待,即为下一个 WebElement ExplicitWait ,那么它将更有效>我们打算与document.readyState == "complete"
,ElementIsVisible(By)
,ElementToBeClickable(By)
,ElementToBeClickable(IWebElement)
等的适当条款进行互动。