当前位置: 首页 > 知识库问答 >
问题:

从渲染器接收消息时超时:通过Selenium Java使用ChromeDriver和Chrome v80记录0.100条消息

晋功
2023-03-14

我们最近升级了我们的测试环境ChromeDriver v80.0.3987.16和Chromev80.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/铬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是否有任何变化?有什么线索吗?

共有3个答案

宰父飞白
2023-03-14

使用这行代码保留代码优先语句

System.setProperty(ChromeDriverService.CHROME_DRIVER_SILENT_OUTPUT_PROPERTY, "true");

如果你不支持Leanthy

System.setProperty("webdriver.chrome.silentOutput", "true");
郑伟彦
2023-03-14

根本原因:每当你在硒驱动程序的帮助下加载某个页面时,

解决方案:当页面加载花费太多时间,并且您需要停止下载额外的子资源(图像、CSS、js等)时,您可以更改

下面的代码只是从页面加载html内容。您可以设置页面加载策略从chrome选项

ChromeOptions options = new ChromeOptions();
options.setPageLoadStrategy(PageLoadStrategy.NONE);

更新解决方案-2:我同意DebanjanB,PageLoad策略与无,而不下载额外的文件(图像,CSS,js等)是不是一个好主意,而执行测试。我确实搜索了关于它的所有问题,并试图找到一个有效的解决方案。我尝试了以下选项,因为有时在某个时候它能够解决这个问题。

    options.addArguments("start-maximized"); 
    options.addArguments("enable-automation"); 
    options.addArguments("--no-sandbox"); 
    options.addArguments("--disable-infobars"); 
    options.addArguments("--disable-dev-shm-usage"); 
    options.addArguments("--disable-browser-side-navigation"); 
    options.addArguments("--disable-gpu");

它们都没有帮助,但是我又找到了一个页面加载策略的解决方案。这一次,我们正在下载所有子资源,但我们正在等待DOMContentLoed事件。这种策略被称为渴望。所有3个页面加载策略的小定义

1.正常:此策略导致Selenium等待整个页面加载(超文本标记语言内容和子资源下载并解析)。

2.急切:此策略导致Selenium等待DOMContentLoaded事件(仅下载和解析HTML内容)。

3.无:此策略导致Selenium在初始页面内容完全接收(下载的超文本标记语言内容)后立即返回。

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

不使用页面加载策略的代码段(或默认情况下由selenium使用的正常代码段)

System.setProperty("webdriver.chrome.driver", "C:\\Users\\...\\LatestDriver\\chromedriver.exe");   
WebDriver driver=new ChromeDriver();
driver.get("http://www.google.com");
driver.manage().window().maximize();
WebDriverWait wait = new WebDriverWait(driver, 20);
WebElement el = wait.until(ExpectedConditions.elementToBeClickable(By.name("q")));
el.click();
List <WebElement> allLinks = driver.findElements(By.tagName("a"));
System.out.println(allLinks.size());
driver.quit();

控制台输出:

在端口41540上启动ChromeDriver 80.0.3987.16(320f6526c1632ad4f205ebce69b99a062ed78647参考/分支头/3987{185}),仅允许本地连接。请保护ChromeDriver和相关测试框架使用的端口,以防止恶意代码访问。2020年2月11日10:22:12上午组织。openqa。硒。遥远的ProtocolHandshake createSession信息:检测到的方言:W3C[1581412933.937][严重]:接收来自渲染器的消息超时:0.100[1581412934.066][严重]:接收来自渲染器的消息超时:0.100[1581412934.168][严重]:接收来自渲染器的消息超时:0.100[1581412934.360][严重]:接收来自渲染器的消息超时渲染器:0.100[1581412934.461][严重]:从渲染器接收消息超时:0.100[1581412934.618][严重]:从渲染器接收消息超时:0.100[1581412934.719][严重]:从渲染器接收消息超时:0.100[1581412934.820][严重]:从渲染器接收消息超时:0.100[1581412934.922][严重]:超时从渲染器接收消息时超时:0.100[1581412935.097][严重]:从渲染器接收消息时超时:0.100 21

与PageLoad策略-渴望:

代码段:

System.setProperty("webdriver.chrome.driver", "C:\\Users\\...\\LatestDriver\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.setPageLoadStrategy(PageLoadStrategy.EAGER);
WebDriver driver=new ChromeDriver(options);
driver.get("http://www.google.com");
driver.manage().window().maximize();
WebDriverWait wait = new WebDriverWait(driver, 20);
WebElement el = wait.until(ExpectedConditions.elementToBeClickable(By.name("q")));
el.click();
List <WebElement> allLinks = driver.findElements(By.tagName("a"));
System.out.println(allLinks.size());
driver.quit();

控制台输出:

在端口1175上启动ChromeDriver80.0.3987.16 (320f6526c1632ad4f205ebce69b99a062ed78647-refs/分支头/3987@{#185})仅允许本地连接。请保护ChromeDriver和相关测试框架使用的端口,以防止恶意代码访问。Feb11, 2020 10:29:05AMorg.openqa.selenium.remote.协议握手创建会话信息:检测方言:W3C
21

常献
2023-03-14

以下是针对不同类型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

如果使用Chromev81,使用最近发布的ChromeDriver81.0.4044.20可以解决此问题。

  • Linux(64位)
  • Mac OS X(64位)
  • Windows(32位)

但是,@bugdroid通过此修订/提交提交了实际修复程序,如下所示:

[ChromeDriver]抑制重试循环超时的记录: r1924789在等待DevTools消息时添加了重试循环。这将垃圾邮件用户的日志与无信息的超时报告。这个CL会抑制那些日志消息,并在适当的时候正确地报告命令超时值。

注:

  • 状态:固定

此错误消息...

[1581082020.245][SEVERE]: Timed out receiving message from renderer: 0.100

...不一定意味着失败。

正如@Tricia提到的,ChromeDriver版本80修改了等待循环以允许更多重试;此循环将生成该消息,但它将继续侦听。然而,该消息的严重标签具有误导性。

此外,在讨论问题3332:重试超时记录为严重,@triciac[ChromeDriver提交]还补充说,ChromeDriver团队添加了一个小超时(100毫秒)到DevToolsClientImpl::HandleEvents直至,以启用导航状态的额外检查。但是,不幸的是,当这个超时到期时,它被记录为SEVERE(通过ProcessNextMessage)。在这个小超时的情况下,它不应该作为SEVERE登录,尽管来自Send命令内部的超时仍然应该。

因此,ChromeDriver需要一种更好地控制日志记录的方法,可能是通过增加超时。但是,如果命令最终超时,列出的超时持续时间非常小,那么需要列出用户定义的超时。

作为临时解决方案,您可以降级到ChromeDriver v79。0.3945.36因为控制台中似乎没有显示严重日志,但您将观察到警告:

[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

您可以在以下网站找到一些相关讨论:

  • 问题3333:在net::ERR\u CONTENT\u DECODING\u失败后,ChromeDriver在等待挂起的导航时可能会无限期阻塞
 类似资料:
  • 我试图从一些门户网站获取交易状态,我在我的java应用程序中使用下面的chrome设置 从渲染器接收消息时超时:60.000 所有悬而未决的交易都在超时。 会话信息:headless chrome=68.0.3440.75 驱动程序信息:chromedriver=2.38(0) 平台=Linux 2.6.32-696.23.1。el6。x86_64 x86_64) 我如何处理这个问题,如果发生任何

  • 问题内容: 我正在尝试从某个门户网站获取交易状态,并且在我的Java应用程序中使用了以下chrome设置, 超时从渲染器接收消息:60.000 并且所有待处理的交易都已超时。 会话信息:headless chrome = 68.0.3440.75 驱动程序信息: chromedriver = 2.38 (0) 平台= Linux 2.6.32-696.23.1.el6.x86_64 x86_64)

  • 您好,我在chrome中通过SeleniumWebDriver执行UI测试时遇到以下错误。 81.0.4044.69。 [1586841277.704][严重]:从渲染器接收消息超时:0.100 有人能帮我修一下吗?

  • 问题内容: 操作系统:Windows 10浏览器:Chrome浏览器版本:73.0.3683.86版(官方内部版本)(32位) 我正在运行硒黄瓜BDD项目,在此我要验证一页的标题。我正在使用扩展报告版本4。项目在本地成功运行。但是当我通过Jenkins运行它时,它在捕获屏幕截图并显示以下错误时失败。 如果我从pom.xml中删除surfire插件,则TEST无法通过Jenkins运行。 在詹金斯的

  • 在Chrome发布了他们最新的稳定版本(89.0.4389.90),我现在收到这个错误: 硒。常见的例外情况。TimeoutException:消息:超时:从呈现程序接收消息时超时:291.642(会话信息:headless chrome=89.0.4389.90) 我的Python代码是 (我的chromedriver是89.0.4389.23是unic) 有人能帮我修一下吗?

  • 在Jenkins上运行cucumber场景时,有时会遇到以下错误:“org.openqa.selenium.TimeoutException:timeout:timeout从渲染器接收消息:10.000”。由于这个错误,图像、截图根本不生成,如何解决这个问题? 05:51:16org.openqa.selenium.Timeout异常:超时:从渲染器接收消息超时:10.000 05:51:16(会