12

我有一台运行 Windows 7 虚拟机的 Windows 10 笔记本电脑。在虚拟机内部,当我启动 WebDriver 时,它会在启动时给出错误gpu_process_transport_factory.cc<1009> Lost UI shared context

IWebDriver driver = new ChromeDriver() //This causes the 1009 Error

错误

此外,对于Failed to query stereo recordingFailed to send GpuChannelMsg_CreateCommandBuffer command_buffer_proxy_impll.cc<115> Shared memory handle is not valid 也会有所不同。

这已经工作了几个月并且没有进行任何更改(此 WebDriver 是虚拟机的唯一用途),运行它的笔记本电脑运行良好(即没有 GPU 问题)。WebDriver 仍然在页面中导航,但会出现更多错误并且速度会慢 10 倍。

编辑:将 ChromeDriver 更新到 2.35 并且仍然是相同的行为。

4

3 回答 3

8

无头 ChromeGoogle 团队Chrome 59中发布,它引入了一种在无头环境中运行Chrome 浏览器的方法。

添加了一条注释:

Headless mode has been available on Mac and Linux since Chrome 59. Windows support came in Chrome 60.

文章Getting Started with Headless Chrome提到:

--disable-gpu \                # Temporarily needed if running on Windows.

添加了一条注释:

现在,--disable-gpu如果您在 Windows 上运行,您还需要包含该标志。

根据讨论Headless: make --disable-gpu flag unnecessary,很明显:

LinuxMac OSX--disable-gpu上不再需要该标志。一旦修复了错误,它也将在 Windows 上变得不必要。SwiftShader fails an assert on Windows in headless mode

引擎盖下发生了什么?

headless: Switch from osmesa to SwiftShader根据Google/Chromium 团队决定将SwiftShaderChrome一起发布的讨论,该团队考虑开始使用它在Headless Mode 下渲染GL 内容。这需要进行一些更改,如下所示:

  • 在Headless 模式下跳过 GPU 数据收集,因为SwiftShader不被该代码视为软件实现,这会导致我们尝试从Window System检索信息时失败。
  • 如果我们打算使用osmesa ,只在InitializeStaticEGLInternal中跳过GL 初始化SwiftShader像其他非软件实现一样需要初始化。
  • Mac OSX目前不支持SwiftShader ,因此团队决定在该平台上继续使用Headless 模式下的物理 GPU (与其他一切都是软件渲染的平台不同)。
  • 因此,为了在Headless 模式下禁用WebGL支持,他们决定使用--disable-gpu--disable-software-rasterizer

的想法Support WebGL in headless仍在讨论中,但SwiftShader fails an assert on Windows in headless mode错误如下:

[0117/125830.649194:ERROR:gpu_process_transport_factory.cc(1043)] Lost UI shared context.
DevTools listening on ws://127.0.0.1:37429/devtools/browser/1f0b2bf7-dfdd-44ac-9da7-f2659d352f0d

结论

此错误不会影响您@Test,您可以暂时忽略该错误。

于 2018-05-03T07:04:16.973 回答
3

这似乎是最新版本的 Chrome (65.0.3325.146) 的问题。通过回滚到 Chrome 的早期版本(64.0.3282.186),我的问题就消失了。

如果我找到更多信息,将进一步调查并在此处更新,但作为临时解决方法,您可以卸载 chrome 并安装版本 64.0.3282.186。

于 2018-03-08T15:09:25.190 回答
3

“丢失的 UI 共享上下文”被误认为是一个错误,而它实际上是一个日志输出。

自 Chrome 72.0 以来,此问题已得到修复。不需要多余的论据。

于 2019-01-23T05:39:10.510 回答