【问题标题】:How to fix “[WARNING]: Timed out connecting to Chrome, retrying…”如何解决“[警告]:连接到 Chrome 超时,正在重试……”
【发布时间】:2020-07-08 22:30:51
【问题描述】:
  • C# .NET Framework 4.8 控制台应用程序(32 位)
  • Edge(铬)80.0.361.69
  • msedgedriver.exe(64bit, 80.0.316.69)
  • Windows 10 家庭版 64 位 1909 18363.720
  • Selenium.WebDriver 4.0.0-alpha05
static void Main()
{

    var edgeOptions = new EdgeOptions
    {
        UseChromium = true,
        BrowserVersion = "80.0.361.69",
        BinaryLocation = @"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
    };

    var service = EdgeDriverService.CreateDefaultServiceFromOptions(Directory.GetCurrentDirectory(), "msedgedriver.exe", edgeOptions);
    using IWebDriver driver = new EdgeDriver(service, edgeOptions)
    {
        Url = "https://www.naver.com"
    };
    Console.ReadLine();
    //While the program is paused, I opened a new window manually and pressed enter on the console

    driver.SwitchTo().Window(driver.WindowHandles[1]); // this takes 30ms
    //After calling driver.SwitchTo().Window(), 
    //a message [1585376776.256][WARNING]: Timed out connecting to Chrome, retrying... appears on the console.

    var elements = driver.FindElements(By.Id("whatever")); //this takes 4030ms

}

以上是我的环境和代码
当我运行我的程序时,

Starting MSEdgeDriver 80.0.361.69 (11b2f9c770113c9712ab7dffaca9ea3596d0deb3) on port 13626
Only local connections are allowed.
Please protect ports used by MSEdgeDriver and related test frameworks to prevent access by malicious code.

DevTools listening on ws://127.0.0.1:13630/devtools/browser/6820c242-c3b6-43c1-9e19-98742a95cc18
[1585376743.252][WARNING]: Timed out connecting to Chrome, retrying...
[1585376745.407][SEVERE]: Timed out receiving message from renderer: 0.100
[1585376745.509][SEVERE]: Timed out receiving message from renderer: 0.100
[1585376745.610][SEVERE]: Timed out receiving message from renderer: 0.100
[1585376745.711][SEVERE]: Timed out receiving message from renderer: 0.100
[1585376745.873][SEVERE]: Timed out receiving message from renderer: 0.100
[1585376745.974][SEVERE]: Timed out receiving message from renderer: 0.100
[1585376746.075][SEVERE]: Timed out receiving message from renderer: 0.100
[1585376746.179][SEVERE]: Timed out receiving message from renderer: 0.100
[1585376746.659][SEVERE]: Timed out receiving message from renderer: 0.100
[1585376746.800][SEVERE]: Timed out receiving message from renderer: 0.100
[1585376746.961][SEVERE]: Timed out receiving message from renderer: 0.100
[1585376747.187][SEVERE]: Timed out receiving message from renderer: 0.100
[1585376747.521][SEVERE]: Timed out receiving message from renderer: 0.100

此消息出现在控制台上。
如果我不切换到另一个窗口但每当切换到另一个窗口时,它可以忽略不计,

[1585376776.256][WARNING]: Timed out connecting to Chrome, retrying... 

出现在控制台上。 这再次出现,下一个第一个 driver.FindElements() 调用总是需要大约 4 秒。
我用 chrome 测试了这个问题,但结果是一样的。
我用谷歌搜索了很多,但找不到任何合适的答案。
我该如何解决这个问题?

【问题讨论】:

  • 不确定你为什么不使用 driver.Navigate().GoToUrl()。您说您正在手动打开窗口并且您正在使用 driver.SwitchTo().Window(driver.WindowHandles[1]);切换到该窗口。我建议您检查您的代码是否引用了正确的窗口。由于窗口是手动打开的,我不确定 selenium 驱动程序是否可以检测到它的切换。出于测试目的,尝试使用代码打开窗口并检查代码是否可以切换到它。另外,尝试计算窗口总数并尝试循环查看打开了哪些窗口。
  • 我手动打开窗口的原因是验证码检测到硒并显示出来。我只有两个窗口并进行了很多测试,因此可以确定我的代码没有错。为了给出一个简单的例子,我总结了代码。原始代码是,selenium 导航到登录 url 并等到我手动登录,解决验证码。然后 selenium 点击一个按钮,创建一个新的弹出窗口,切换到它等等。
  • 我现在明白你在做什么,我想和你确认你的代码能找到那个窗口吗?
  • 是的。我想知道为什么需要一段时间并出现连接警告

标签: c# selenium microsoft-edge


【解决方案1】:

每当您在 selenium 驱动程序的帮助下加载某个页面时,驱动程序脚本都会等待页面完全加载。但有时 webdriver 需要 3 到 4 分钟才能加载页面,在这种情况下,您会在控制台中看到 TimeoutException 异常。

当页面加载时间过长而您需要停止下载额外的子资源(图像、css、js 等)时,您可以通过 webdriver 更改 pageLoadStrategy

默认情况下,当 Selenium 加载页面时,它遵循正常的 pageLoadStrategy

System.setProperty("webdriver.edge.driver","E:\\edgedriver.exe");

edgeOptions options = new EdgeOptions();
options.setPageLoadStrategy(PageLoadStrategy.NONE);

driver = new EdgeDriver(options);

参考:

Timed out receiving message from renderer in selenium

【讨论】:

  • 嗯...我尝试了您的解决方案,没有任何改变。在我的情况下,超时警告甚至在我看到页面内容之前就出现了,不管你提到的 3 分钟。我还使用开发人员工具检查了网络选项卡上是否还有任何需要加载的内容。每当 selenium 切换到一个完全加载的新窗口时,下一个方法调用需要 4 秒。
  • 我试图参考这个线程,根据讨论,网络驱动程序似乎存在一些问题。他们正在讨论 Chrome 网络驱动程序,但我认为 Edge 网络驱动程序存在类似问题。他们说,如果您升级或降级网络驱动程序,那么问题就可以解决。如果可能,您可以尝试使用不同版本的网络驱动程序。参考:stackoverflow.com/questions/60114639/… 网络驱动链接:msedgewebdriverstorage.z22.web.core.windows.net
  • 我刚刚尝试使用版本 81.0.416.41。打印的文本是 [15892:848:0331/150726.512:ERROR:browser_switcher_service.cc(238)] XXX Init() [1585634850.609][SEVERE]: Timed out 从渲染器接收消息: 0.100 [1585634850.730][SEVERE]: Timed out从渲染器接收消息:0.100 [15892:848:0331/150731.208:ERROR:device_event_log_impl.cc(162)] [15:07:31.207] 蓝牙:bluetooth_adapter_winrt.cc:1055 获取默认适配器失败。时间减少到 2 秒,但仍然需要足够长的时间。
  • 我将尝试与其他工程师讨论这个问题,以了解他们对这个问题的看法,如果我得到任何有用的信息,我会尽力为您提供。感谢您的理解。
猜你喜欢
  • 2021-07-15
  • 1970-01-01
  • 2020-03-06
  • 2014-08-26
  • 2014-10-07
  • 2019-06-25
  • 1970-01-01
  • 2015-03-28
  • 2016-02-04
相关资源
最近更新 更多