当我尝试在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位,谷歌浏览器64位版本:66.0.3359.139,python 2.7 32位,chromedriver.exe 32位,pycharm 2018.1.1
有趣的是,如果我在没有无头选项的情况下运行它,那么一切正常。弹出浏览器,按下I'm feeling lucky
按钮,然后拍摄屏幕截图。只有当我添加无头位时才会发生此错误。
我不确定在其他系统运行相同软件的情况下,1系统可能会有什么不同。
答案 0 :(得分:7)
无头Chrome 首次由 Google小组以 GA(一般可用性)发布时,文章Getting Started with Headless Chrome
提到:< / p>
--disable-gpu \ # Temporarily needed if running on Windows.
添加了一条注释:
现在,如果您在Windows上运行,还需要包含
--disable-gpu
标记。
根据讨论Headless: make --disable-gpu flag unnecessary
,很明显:
Linux 或 Mac OSX 上不再需要
}修复了错误--disable-gpu
标志。SwiftShader fails an assert on Windows in headless mode
后,在Windows上也没有必要。
根据讨论headless: Switch from osmesa to SwiftShader
,由于Google / Chromium团队决定使用 Chrome 发布 SwiftShader ,团队会开始使用它来渲染 GL 无头模式中的内容。这需要进行以下几项更改:
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
,您可以暂时忽略该错误。
答案 1 :(得分:0)
我有同样的问题。尝试将这些标志添加到Chrome驱动程序选项中:
options.add_arguments("--proxy-server='direct://'");
options.add_arguments("--proxy-bypass-list=*");