c# - 如何解决“[警告]:连接到 Chrome 超时,正在重试……”
问题描述
- C# .NET Framework 4.8 控制台应用程序(32 位)
- 边缘(铬)80.0.361.69
- msedgedriver.exe(64 位,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测试了这个问题,但结果是一样的。
我用谷歌搜索了很多,但找不到任何合适的答案。
我该如何解决这个问题?
解决方案
每当您在 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);
参考:
推荐阅读
- angularjs - 我无法运行角度应用程序
- c++ - 宏 $(VCTargetsPath) 究竟在哪里定义?
- module - Raspberry Pi Zero 作为读写大容量存储
- html - 更改过滤器选项突出显示颜色 HTML
- mysql - 查询中的 2 个替换变量并首先执行第二个替换变量
- excel - 使用 Excel VBA 解析来自 ITIS 的 XML 响应
- python - Pygame无响应显示
- java - 有没有办法使用 Java 11 的 HttpClient 从 HTTP 1.1 响应的状态行中获取原因短语?
- django - 当我尝试使用英语以外的任何语言进行搜索时出现服务器错误 (500)
- isabelle - 如何在 Isabelle 中证明“(⋀x. PROP ?P x) ⟹ PROP ?P ?x”?