首页 > 解决方案 > 如何解决“[警告]:连接到 Chrome 超时,正在重试……”

问题描述

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测试了这个问题,但结果是一样的。
我用谷歌搜索了很多,但找不到任何合适的答案。
我该如何解决这个问题?

标签: c#seleniummicrosoft-edge

解决方案


每当您在 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);

参考:

在 selenium 中接收来自渲染器的消息超时


推荐阅读