当前位置: 首页 > 知识库问答 >
问题:

错误:gpu_进程_传输_工厂。cc(1007)-丢失用户界面共享上下文:在无头模式下通过ChromeDriver初始化Chrome浏览器时

薄兴昌
2023-03-14

当我试图在三台计算机中的两台上运行代码时,我遇到了这个错误:

[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感幸运按钮,并拍摄屏幕截图。只有当我添加无头位时,才会出现此错误。

我不确定在一个系统上有什么不同之处,当其他系统运行相同的软件时,该系统可以工作。

共有2个答案

贺正祥
2023-03-14

我遇到了同样的问题。试着将这些标志添加到Chrome驱动程序选项中:

options.add_arguments("--proxy-server='direct://'");
options.add_arguments("--proxy-bypass-list=*");

有关更多信息,请参阅此链接。

高砚
2023-03-14

当Google团队首次将Headless Chrome发布为GA(通用可用性)时,《Headless Chrome入门》一文提到:

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

增加了一个注释:

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

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

在Linux或Mac OSX上不再需要禁用gpu标志。一旦SwiftShader在无头模式下的Windows断言失败,它在Windows上也将变得不必要。

根据讨论headless:从osmesa切换到SwiftShader,因为谷歌/铬团队决定将SwiftShader与Chrome一起发布,团队认为开始使用它以headless模式呈现GL内容。这需要进行如下几项更改:

  • 跳过无头模式下的GPU数据收集,因为该代码不认为SwiftShader是一个软件实现,这导致我们试图从窗口系统检索信息时失败

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

[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

此错误不会影响您的@测试,您可以暂时忽略此错误。

 类似资料:
  • 问题内容: 我正在尝试开始使用Selenium,并下载了chrome驱动程序并放入了我的类路径中。我只是想立即获取标题,以查看是否可以使用它。当前代码如下: 我希望我的输出类似于“ Google”,但是却收到此错误: 我真的无法弄清楚该错误试图告诉我什么。是否是因为我在完全加载网站之前要求标题?我需要在之前添加某种命令吗? 问题答案: 此错误消息… …暗示 ChromeDriver 无法启动/产生

  • 我做我的代码在CromeDrive在'正常'模式和工作正常。当我切换到无头模式时,它不会下载文件。我已经尝试了我在互联网上找到的代码,但是不起作用。 有人知道如何解决这个问题吗? PS:我不一定要用Chomedrive。如果它在另一个驱动器中工作,对我来说没问题。

  • 问题内容: 我正在研究用于网络抓取的python脚本,并且没有使用Chromedriver作为软件包之一。我希望此操作无需任何弹出窗口即可在后台运行。我在chromedriver上使用了“无头”选项,它似乎在不显示浏览器窗口的情况下完成了工作,但是,我仍然看到.exe文件正在运行。查看我在说什么的屏幕截图。屏幕截图 这是我用来启动ChromeDriver的代码: 我尝试做的事情是将选项中的窗口大小

  • 我尝试使用 Websphere 8.5 完整配置文件将应用程序转换为 Liberty 配置文件,但我遇到了有关不兼容的问题。 无法找到初始上下文工厂 我知道班级的位置com.ibm.ws.ejb.thinclient_8.0.0.jar在完整的配置文件中,但我不能在Liberty配置文件中找到相关的,还有一件事,因为我正在做维护应用程序,所以班级要看看。 com . IBM . WebSphere

  • 我想将JSTestDriver与jenkins-CI集成。问题是生成服务器没有显示。有没有办法无头运行浏览器? 谢谢