C# 等待页面加载

C# 等待页面加载,c#,selenium,selenium-webdriver,C#,Selenium,Selenium Webdriver,我试图创建一个方法,等待页面通过javascript加载,但出现了一个错误。可能我没有正确使用这个方法 public static void WaitForLoad(this IWebDriver driver, int timeoutSec = 15) { WebDriverWait wait = new WebDriverWait(driver, new TimeSpan(0, 0, timeoutSec)); wait.Until(wd =>

我试图创建一个方法,等待页面通过
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)
无法从用法中推断方法“WebdriverExtensions.ExecuteJavaScript(IWerbDriver,string,params object[]”的类型参数。请尝试明确指定类型参数)
等待加载(…)
函数中,您正在检查
(“return document.readyState”)=“complete”

实际上,对函数
WaitForLoad(…)
的调用纯粹是重载,没有实际效果。这是因为Selenium DLL/JAR/模块的设计方式是,只有当您使用的浏览器将
document.readyState==“complete”
发送到webdriver时,
webdriver
才会执行下一行代码

在您的情况下,与其验证
document.readyState==“complete”
,不如等待更有效,即诱导ExplicitWait下一个Web元素,我们打算与
element可见(By)
element可禁用(By)中的相应子句进行交互
元素可选择(IWebElement)
元素可选择(IWebElement,布尔值)
,等等。

此线程应可帮助您: