错误:gpu_process_transport_factory.cc(1007) - 丢失 UI 共享上下文:在无头模式下通过 ChromeDriver 初始化 Chrome 浏览器时

2023-11-22

当我尝试在 3 台计算机中的 2 台上运行代码时,出现此错误:

[0502/155335.565:ERROR:gpu_process_transport_factory.cc(1007)] Lost UI shared context.

这是代码:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import os

chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--window-size=1920x1080")

chrome_driver = os.getcwd() + "\\chromedriver.exe"
print "chrome driver:" + chrome_driver

driver = webdriver.Chrome(chrome_options=chrome_options, 
executable_path=chrome_driver)

driver.get("http://www.google.com")

luck_button = driver.find_element_by_css_selector("[name=btnI")
luck_button.click()

driver.get_screenshot_as_file("capture.png")

现在我已经检查了所有系统,它们正在运行Windows 10 64位,google chrome 64位版本:66.0.3359.139,python 2.7 32位,chromedriver.exe 32位,pycharm 2018.1.1

有趣的是,如果我在没有无头选项的情况下运行它,那么一切都会正常。弹出浏览器,I'm feeling lucky按下按钮,并拍摄屏幕截图。只有当我添加无头位时才会出现此错误。

我不确定在其他系统运行相同软件时,一个系统上有什么不同可以让这个功能正常工作。


When 无头镀铬最初发布为GA(全面上市) by 谷歌团队文章Getting Started with Headless Chrome提到:

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

添加注释如下:

现在,您还需要包括--disable-gpu如果您在 Windows 上运行,请标记。

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

The --disable-gpu不再需要标志Linux or Mac OSX。一旦 bug 出现,它在 Windows 上也将变得不必要SwiftShader fails an assert on Windows in headless mode是固定的。

幕后发生了什么?

根据讨论headless: Switch from osmesa to SwiftShaderGoogle/Chromium 团队决定发布快速着色器 with Chrome团队考虑开始使用它来渲染GL含量 in 无头模式。这需要进行一些更改,如下所示:

  • 跳过 GPU 数据收集无头模式 since 快速着色器该代码不被视为软件实现,当我们尝试从该代码检索信息时会导致失败窗口系统.
  • 只跳过总账初始化 in 初始化StaticEGL内部如果我们打算使用osmesa. 快速着色器像其他非软件实现一样需要初始化。
  • 快速着色器目前不支持Mac OSX,因此团队决定继续使用物理GPU in 无头模式在该平台上(与其他平台上的一切都是软件渲染的不同)。
  • 所以,要禁用WebGL支持无头模式他们决定使用--禁用 GPU and --禁用软件光栅器

这个想法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您可以暂时忽略该错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

错误:gpu_process_transport_factory.cc(1007) - 丢失 UI 共享上下文:在无头模式下通过 ChromeDriver 初始化 Chrome 浏览器时 的相关文章

随机推荐

  • 使用 Heroku 的 Git 子模块

    问题 我在 Heroku 上有一个 Rails 3 1 应用程序 它将很快需要一堆 第 3 方 子模块 其中一些有子模块 不幸的是 Heroku 缺乏子模块支持 Heroku 网站上的一项建议是将子模块的内容移至主存储库中 here 第一次
  • pip freeze 列出已卸载的软件包

    在 OS X 10 6 8 上 我使用卸载了一个包 至少 pip 告诉我是这样 sudo pip uninstall pkg name 但当我这样做时包裹仍然出现 pip freeze 我再次尝试执行上面的卸载命令 pip 告诉我该软件包尚
  • 将输入文件替换为表单中我自己的按钮

    基本上我想隐藏输入文件并使用按钮来选择表单中的文件 如果我使用
  • onchange 事件是否传播?

    我使用事件委托来侦听 DOM 中较低层的事件 但它不适用于选择框上的 onchange 事件 onchange 事件是在 DOM 中传播还是冒泡 谷歌搜索未能找到确凿的答案 根据规格 change submit reset应该起泡并且foc
  • 查询Android数据库是否存在!

    我已经为我的 android 应用程序创建了一个数据库 其中包含静态数据并且不需要更新 删除功能 因此当应用程序启动时 我想检查数据库是否存在 如果不存在则执行我的 dbAdapter 类 我知道它是一个简单的 if 语句 但我只是想知道查
  • 您建议使用哪个 CPAN 模块将 HTML 转换为纯文本?

    您建议使用哪个 CPAN 模块将 HTML 转换为格式化纯文本 一项严格的要求是该模块必须处理 Unicode 字符 I like HTML 格式文本 and HTML FormatText WithLinks
  • Angular 2 - 如何为动态加载的组件设置 id 属性

    我在用DynamicComponentLoader加载子组件并生成以下 html
  • 在 std::map 和 std::unordered_map 之间进行选择[重复]

    这个问题在这里已经有答案了 现在std有一个真正的哈希映射unordered map 为什么 或何时 我仍然想使用旧的map over unordered map在它实际存在的系统上 是否有任何我无法立即看到的明显情况 As 已经提到过 m
  • R tm removeWords函数不删除单词

    我试图从我构建的语料库中删除一些单词 但它似乎不起作用 我首先遍历所有内容并创建一个数据框 按频率顺序列出我的单词 我使用此列表来识别我不感兴趣的单词 然后尝试创建一个删除单词的新列表 但是 这些词仍然保留在我的数据集中 我想知道我做错了什
  • 在 JAVA 中使用 JSOUP 从 HTML 中提取 CSS 样式

    任何人都可以帮助使用 Java 中的 Jsoup 从 HTML 中提取 CSS 样式 例如在下面的 html 中我想提取 ft00 和 ft01 div style width 931 height 1243 div
  • WPF:滚动项目控制内容固定标题

    是否可以使用 WPF 的 ItemsControl 执行类似的操作 Demo 我正在尝试冻结 GroupedItems 而不是 GridView 列 资源
  • 如何获取小部件当前的 x 和 y 坐标?

    我目前正在编写一个关于游戏 4 in a row 的游戏项目 为了制作图片小部件磁盘落在列中的动画 我一直在考虑创建一个 while 循环 如下所示 while widgetx and widgety 在空白部分将有我需要获得的值 我的问题
  • WebRTC 永远不会在 IceCandidate 上触发

    我开始使用 WebRTC 进行开发 但那东西从来没有给我提供 ICE 候选人 我设置了一切 我正在交换描述和东西 我还在那里缩小了一个超级丑陋的功能 以确保一切都正确运行 一个接一个 两者的信令状态都是稳定的 onError从未被触发 如预
  • Git:从存储库自动拉取?

    有没有什么方法可以设置 git 使其侦听来自远程存储库的更新 并在发生变化时拉取 用例是我想使用 git 部署一个 Web 应用程序 这样我就可以对已部署的应用程序进行版本控制 但想将 中央 git 存储库放在 Github 上而不是 We
  • 将 int 转换为 16 位无符号短整型

    我想在 Python 中将整数修剪为 16 位字 无符号短整型 像下面这样的东西不起作用 word array H word insert 0 0x19c6acc6 Use ctypes c ushort gt gt gt import c
  • 为什么 Android 教程中的大多数字段(类成员)都以“m”开头?

    我知道驼峰规则 但我对这个 m 规则感到困惑 它代表什么 我是一名 PHP 开发人员 我们 使用变量的首字母作为类型指示 例如 b 代表布尔值 i 代表整数等等 m 是 Java 的东西吗 它代表移动吗 混合 该表示法来自 AOSP And
  • 如何迭代 PriorityQueue?

    for Event e pq 不按优先级顺序迭代 while pq isEmpty Event e pq poll 这有效但清空了队列 你不能遍历一个Priority Queue由于底层实现的原因 我认为它是Java中的最小堆 因此按该顺序
  • GCC 中函数静态变量是线程安全的吗?

    在示例代码中 void foo static Bar b 编译为GCC是否保证b将以线程安全的方式创建和初始化 在 gcc 的手册页中 找到了 fno 线程安全 静态命令行选项 不要发出额外的代码来使用 C ABI 中指定的例程 本地线程安
  • php:无法修改函数中的数组?

    所以我尝试通过在函数中添加键和值来修改数组modArr 我希望 var 转储显示添加的项目 但我得到 NULL 我在这里缺少哪一步
  • 错误:gpu_process_transport_factory.cc(1007) - 丢失 UI 共享上下文:在无头模式下通过 ChromeDriver 初始化 Chrome 浏览器时

    当我尝试在 3 台计算机中的 2 台上运行代码时 出现此错误 0502 155335 565 ERROR gpu process transport factory cc 1007 Lost UI shared context 这是代码 f