【问题标题】:C# Selenium, how to execute javascript on web driver while page is still loadingC# Selenium,如何在页面仍在加载时在 Web 驱动程序上执行 javascript
【发布时间】:2017-02-01 18:29:23
【问题描述】:

所以我有一个页面需要很长时间才能加载,因为它加载了一些背景内容。我希望能够在加载 DOM 并且 readyState 为“交互式”后立即与它进行交互。基本上我只想点击一个链接让我离开这个页面,因为我不需要在继续之前加载整个内容。但是,在加载页面之前,我似乎无法在驱动程序上运行 Javascript;发生的事情是我的 ExecuteJavascript 函数也超时了。

try
{
    element.Click(); //BrowserCommandTimeout was set to 10 seconds
}
catch (Timeout e)
{
     string state = driver.ExecuteJs("return document.readyState").ToString(); //Also times out after 10 seconds

     while ((state != "complete") && state != "interactive")
     {
          Utilities.Sleep(2000);
     }
}

有人知道如何解决这个问题吗?

【问题讨论】:

  • 您是否尝试过使用转义键执行.SendKeys()?这应该会阻止页面加载,然后您应该能够继续。我似乎记得在过去看到其他人尝试过。我不知道这会解决整个问题,但可能会让你更快地到达你想去的地方。

标签: javascript c# selenium selenium-webdriver


【解决方案1】:

就这个

var waitForElement = new WebDriverWait(_driver, TimeSpan.FromSeconds(5));
waitForElement.Until(driver =>_driver.ExecuteJavaScript<string>("return document.readyState").ToString() == "complete");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    • 2020-01-19
    • 2019-11-09
    相关资源
    最近更新 更多