我们最近使用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 v79,ChromeDriver/Chrome v80是否有任何变化?有什么线索吗
临时解决办法
以下是针对Chrome用户的不同变体的解决方案
如果您使用的是chromev80,那么使用最近发布的ChromeDriver 80.0.3987.106解决了这个问题
代码块:
控制台输出:
如果您使用的是chromev81,那么使用最近发布的ChromeDriver 81.0.4044.20解决了这个问题
永久解决方案
但是,
@bugdroid
通过此revision/commit提交了实际修复程序,如下所示:注意:
历史
此错误消息
…不一定表示失败
正如@Triciamentions所述,ChromeDriver版本80修改了等待循环以允许更多重试;此循环将生成该消息,但它将继续侦听。然而,该消息的严重标签具有误导性
此外,在讨论中,{a10},{a11}[ChromeDriver Committer]还补充说,ChromeDriver团队向{}添加了一个小的超时(100毫秒),以启用导航状态的额外检查。但是,不幸的是,当此超时过期时,它被记录为严重(由
ProcessNextMessage
)。在这个小超时的情况下,它不应该记录为严重,尽管从SendCommandInternal
开始的超时仍然应该记录所以ChromeDriver需要一种更好的方法来控制日志记录,可能是通过增加超时。但是,如果命令最终超时,则列出的超时持续时间非常小,则需要列出用户定义的超时
即时解决方案
作为临时解决方案,您可以降级到ChromeDriver v79.0.3945.36,因为控制台中似乎没有显示严重日志,但您将观察到警告:
听起来像是一个安全的解决办法并已由铬团队成员确认
代码块:
控制台输出:
tl;博士
您可以在以下内容中找到一些相关讨论:
使用这行代码保留代码优先语句
如果你不支持Leanthy
根本原因:每当您在selenium驱动程序的帮助下加载某个页面时,
driver
脚本将等待页面完全加载。但是有时候webdriver需要更多的时间来加载页面,在这种情况下,您将在控制台中看到TimeoutException
异常解决方案:当页面加载花费太多时间并且需要停止下载其他子资源(图像、CSS、js等)时,可以通过webdriver更改页面加载策略
下面的代码只是从页面加载html内容。您可以从chromeoptions
更新的解决方案-2:我同意DebanjanB,在执行测试时,不下载其他文件(图像、CSS、js等)的无页面加载策略不是一个好主意。我搜索了所有关于它的问题,并试图找到一个有效的解决方案。我尝试了以下选项,因为有时它能够解决这个问题
他们都没有帮助,但我找到了一个解决方案再次与页面加载策略。这次我们正在下载所有子资源,但我们正在等待DOMContentLoaded事件。这种策略称为“渴望”。所有3种页面加载策略的小定义
1。正常: 此策略导致Selenium等待整个页面加载(下载并解析HTML内容和子资源)
2。渴望: 此策略导致Selenium等待DOMContentLoaded事件(仅下载和解析HTML内容)
3。无: 此策略使Selenium在初始页面内容之后立即返回 已完全接收(HTML内容已下载)
注意:默认情况下,当Selenium加载页面时,它遵循正常的页面加载策略
不使用页面加载策略的代码段(或默认情况下由selenium使用的正常代码段)
控制台输出:
使用页面加载策略-急切:
代码片段:
控制台输出:
相关问题 更多 >
编程相关推荐