首页 > 解决方案 > 错误:browser_process_sub_thread.cc(221)] 在 Windows 上使用 Selenium ChromeDriver 和 Chrome 等待网络服务 57 毫秒

问题描述

所以我们在 C# 中使用 Selenium 来控制 Chrome。在带有 v74 chromedriver 的 Chrome v74 和带有 v75 chromedriver 的 Chrome v75(测试版)中都出现了以下问题。

例如,在与网站进行大约 12 次交互后,我们会收到一个错误

[10084:5660:0601/111205.119:ERROR:browser_process_sub_thread.cc(221)] Waited 57 ms for network service

我们无法编辑browser_process_sub_thread.cc和重新编译。

我已在此问题上寻求帮助,并且正在其他地方进行讨论。但是,由于 v75 测试版出现了同样的问题,因此似乎没有发生任何事情。

我们如何解决这个问题?它只出现在这组测试中,而不出现在其他测试中。

之后

现在我收到这样的信息,即

ERROR:browser_process_sub_thread.cc(217)] Waited 285 ms for network service

立即而不是在一些交互之后!发生了什么?

标签: windowsseleniumgoogle-chromechromiumsandbox

解决方案


此错误消息...

ERROR:browser_process_sub_thread.cc(217)] Waited 771 ms for network service

...来自browser_process_sub_thread.ccIOThreadCleanUp()文件中的方法,该方法实现为:

// Record time spent for the method call.
base::TimeDelta network_wait_time = base::TimeTicks::Now() - start_time;
UMA_HISTOGRAM_TIMES("NetworkService.ShutdownTime", network_wait_time);
LOG(ERROR) << "Waited " << network_wait_time.InMilliseconds()
           << " ms for network service";

根据 Chromium Servicification 中的讨论-如果生成了子进程但服务启动失败,则需要更好地处理核心服务进程在新的 网络进程 (NP) [ ] 之后无法启动/初始化的情况,在这些情况下:--enable-features=NetworkService

  • 浏览器 UI 保持可见并打开。
  • 由于该服务是可重新启动的,因此似乎在后台发生了一个无限循环的尝试子重生,这会消耗更多的系统资源。
  • 可见的浏览器由于严重故障而无法正常关闭,只是坐在那里,引擎盖下没有网络。

因此,Chrome 需要运行的所有核心服务都需要一个策略,这可能是网络进程 (NP)的故障路径。


根据上述要求,根据讨论Sandbox,Windows Chrome上的网络服务为新的Network Process (NP)引入了新的沙箱 (SANDBOX_NETWORK_TYPE ) 。

Windows是第一个推出这两项新功能的平台,您是最幸运的用户之一,能够获得以下第一手用户体验

  • 为网络服务启用的功能:NetworkService

    --enable-features=NetworkService
    
  • 为网络服务上的 启用的功能: NetworkServiceWindowsSandbox

    --enable-features=NetworkServiceWindowsSandbox
    

修订版和来自@WillHarris的此提交将解决此问题。sandbox_win.cc


推荐阅读