我们最近使用 ChromeDriver v80.0.3987.16 和 Chrome v80.0.3987.87(官方构建)(64 位)升级了我们的测试环境,升级后即使是最小的程序也会产生大量这些严重的日志:
[1581082019.282][SEVERE]: Timed out receiving message from renderer: 0.100
[1581082020.245][SEVERE]: Timed out receiving message from renderer: 0.100
早些时候,这些消息偶尔会被观察到,直到使用 ChromeDriver v79.0/Chrome v79.0 组合。
最小代码块:
public class chromeDemo
{
public static void main(String[] args)
{
System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://www.google.com/");
driver.quit();
}
}
控制台输出:
Starting ChromeDriver 80.0.3987.16 (320f6526c1632ad4f205ebce69b99a062ed78647-refs/branch-heads/3987@{#185}) on port 9194
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
Feb 07, 2020 6:56:57 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
[1581082019.282][SEVERE]: Timed out receiving message from renderer: 0.100
[1581082020.245][SEVERE]: Timed out receiving message from renderer: 0.100
[1581082020.430][SEVERE]: Timed out receiving message from renderer: 0.100
[1581082020.531][SEVERE]: Timed out receiving message from renderer: 0.100
[1581082020.632][SEVERE]: Timed out receiving message from renderer: 0.100
[1581082020.734][SEVERE]: Timed out receiving message from renderer: 0.100
[1581082020.835][SEVERE]: Timed out receiving message from renderer: 0.100
[1581082021.364][SEVERE]: Timed out receiving message from renderer: 0.100
[1581082021.544][SEVERE]: Timed out receiving message from renderer: 0.100
[1581082021.647][SEVERE]: Timed out receiving message from renderer: 0.100
[1581082021.748][SEVERE]: Timed out receiving message from renderer: 0.100
[1581082021.850][SEVERE]: Timed out receiving message from renderer: 0.100
[1581082021.952][SEVERE]: Timed out receiving message from renderer: 0.100
有人面临同样的情况吗?
ChromeDriver/Chrome v80 相对于 ChromeDriver/Chrome v79 是否有任何变化?有什么线索吗?
最佳答案
临时解决方案
以下是针对不同版本的 Chrome 用户的解决方案。
System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.quit();
Starting ChromeDriver 80.0.3987.106 (f68069574609230cf9b635cd784cfb1bf81bb53a-refs/branch-heads/3987@{#882}) on port 20041
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
Feb 14, 2020 9:50:57 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
永久解决方案
但是,
@bugdroid
通过此 revision 提交了实际修复/commit如下:[ChromeDriver] suppress logging of retry loop timeout: r1924789 added a retry loop while waiting for DevTools messages. This spammed users' logs with uninformative timeout reports. This CL suppresses those log messages and correctly reports the command timeout value when appropriate.
备注 :
- Status: Fixed
- Labels: ToBeReleased ChromeDriver-82
历史
此错误消息...
[1581082020.245][SEVERE]: Timed out receiving message from renderer: 0.100
...不一定表示失败。
作为@Tricia mentions即,ChromeDriver 版本 80 修改了等待循环以允许更多重试;此循环将生成该消息,但它会继续监听。但是,该消息的 SEVERE 标记具有误导性。
此外,在讨论 Issue 3332: Retry timeout logged as severe , @triciac [ChromeDriver Committer] 还补充说,ChromeDriver 团队在
DevToolsClientImpl::HandleEventsUntil
中添加了一个小超时(100 毫秒)。启用对导航状态的额外检查。但是,不幸的是,当这个超时到期时,它被记录为严重(由 ProcessNextMessage
)。在这个小超时的情况下,它不应该记录为 SEVERE,尽管超时来自 SendCommandInternal
还是应该的。因此 ChromeDriver 需要一种更好的方式来控制日志记录,可能是通过增加超时时间。但是,如果命令最终超时,列出的超时时间非常小,则需要列出用户定义的超时时间。
立即解决
作为临时解决方案,您可以降级到 ChromeDriver v79.0.3945.36似乎 SEVERE 日志没有显示在控制台中,但您会观察到警告:
[WARNING]: This version of ChromeDriver has not been tested with Chrome version 80
这听起来像是一个......安全的解决方法......并且已经被 Chromium 团队成员确认。
public class A_Chrome
{
public static void main(String[] args)
{
System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://www.google.com/");
driver.quit();
}
}
Starting ChromeDriver 79.0.3945.36 (3582db32b33893869b8c1339e8f4d9ed1816f143-refs/branch-heads/3945@{#614}) on port 9200
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
[1581503845.444][WARNING]: This version of ChromeDriver has not been tested with Chrome version 80.
Feb 12, 2020 4:07:26 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
tl;博士
您可以在以下位置找到一些相关的讨论:
关于selenium - 超时接收来自渲染器的消息 : 0. 100 通过 Selenium Java 使用 ChromeDriver 和 Chrome v80 的日志消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60114639/