当我尝试在 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(使用前将#替换为@)