ChromeDriver 显示丢失的 UI 共享上下文 [英] ChromeDriver showing Lost UI Shared Context

查看:33
本文介绍了ChromeDriver 显示丢失的 UI 共享上下文的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a Windows 10 laptop running a Windows 7 Virtual Machine. Inside the Virtual Machine, when i start the WebDriver, it gives the error gpu_process_transport_factory.cc<1009> Lost UI shared context when it is started:

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

对于无法查询立体声录音无法发送 GpuChannelMsg_CreateCommandBuffercommand_buffer_proxy_impll.cc<115> 共享内存也有所不同句柄无效.

这已经工作了几个月并且没有做任何改变(这个 WebDriver 是虚拟机的唯一目的),运行它的笔记本电脑运行良好(即. 没有 GPU 问题).WebDriver 仍然可以浏览页面,但会出现更多错误并且速度降低了 10 倍.

This has been working for months and no changes were made (this WebDriver is the sole purpose of the Virtual Machine), the laptop running it is running fine (ie. no GPU problems). The WebDriver still navigates through pages, but giving further errors and 10x slower.

编辑:已将 ChromeDriver 更新至 2.35,但行为仍然相同.

EDIT: Updated to ChromeDriver to 2.35 and still the same behavior.

推荐答案

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

Headless Chrome was shipped in Chrome 59 by Google Team which introduced a way to run the Chrome Browser in a Headless Environment.

一个注释被添加为:

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

文章 无头 Chrome 入门 提到:

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

一个注释被添加为:

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

Right now, you'll also want to include the --disable-gpu flag if you're running on Windows.

根据讨论 无头:制作 --disable-gpu flag 不必要 很明显:

LinuxMac OSX 上不再需要 --disable-gpu 标志.一旦出现错误 SwiftShader 在无头模式下的 Windows 上断言失败 已修复.

The --disable-gpu flag is no longer necessary on Linux or Mac OSX. It will also become unnecessary on Windows as soon as the bug SwiftShader fails an assert on Windows in headless mode is fixed.

幕后发生了什么?

根据讨论 headless:从osmesa 到 SwiftShader 因为 Google/Chromium 团队决定将 SwiftShaderChrome 一起发布,该团队想开始使用它来渲染无头模式中的GL内容.这需要进行以下几项更改:

What happened under the hood?

As per the discussion headless: Switch from osmesa to SwiftShader as Google/Chromium team decided to ship SwiftShader with Chrome, the team thought to start using it to render GL content in Headless Mode. This required a couple of changes as follows :

  • Headless Mode 中跳过 GPU 数据收集,因为 SwiftShader 不被该代码视为软件实现,这会导致我们尝试从 Headless Mode 检索信息时失败strong>窗口系统.
  • 如果我们打算使用 osmesa,则仅跳过 InitializeStaticEGLInternal 中的 GL 初始化.SwiftShader 需要像其他非软件实现一样进行初始化.
  • SwiftShader 目前在 Mac OSX 上不受支持,因此团队决定在 Headless 模式下继续使用物理 GPU 在该平台上(与在其他平台上一切都由软件呈现)不同.
  • 因此,为了在 Headless Mode 中禁用 WebGL 支持,他们决定使用 --disable-gpu--disable-软件光栅化器
  • Skip GPU data collection in Headless Mode since SwiftShader isn't considered a software implementation by that code which lead to a failure when we tried to retrieve information from the Window System.
  • Only skip GL initialization in InitializeStaticEGLInternal if we intend to use osmesa. SwiftShader requires initialization like the other non-software implementations.
  • SwiftShader is currently not supported on Mac OSX, so the team decided to continue to use the physical GPU in Headless Mode on that platform (unlike on other platforms where everything is software rendered).
  • So, to disable WebGL support in Headless Mode they decided to use --disable-gpu and --disable-software-rasterizer

在无头中支持 WebGL 的想法 仍在讨论中,但 SwiftShader 在无头模式下的 Windows 上断言失败,错误如下:

The idea to Support WebGL in headless is still under discussion but SwiftShader fails an assert on Windows in headless mode with an error as :

[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,您可以暂时忽略该错误.

Conclusion

This error doesn't impact your @Test and you can ignore the error for the time being.

这篇关于ChromeDriver 显示丢失的 UI 共享上下文的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆