等待页面加载

时间:2017-11-06 05:36:22

标签: 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 => 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)

1 个答案:

答案 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)等的适当条款进行互动。