web-dev-qa-db-ja.com

エラー:gpu_process_transport_factory.cc(1007)-失われたUI共有コンテキスト:ChromeヘッドレスモードでChromeDriverを使用してブラウザーを初期化中

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")

すべてのシステムをチェックしました。Windows10 64ビット、google chrome 64ビットバージョン:66.0.3359.139、python 2.7 32-ビット、chromedriver.exe 32ビット、pycharm 2018.1.1

面白いのは、ヘッドレスオプションなしでこれを実行すると、すべてが機能することです。ブラウザがポップアップし、I'm feeling luckyボタンを押して、スクリーンショットを撮ります。このエラーは、ヘッドレスビットを追加した場合にのみ発生します。

他のシステムが同じソフトウェアを実行しているときにこれが機能する可能性がある1つのシステムで何が違うのかはわかりません。

6
user3259863

Headless Chromeが最初にGA(General Availability)by Google Teamとしてリリースされたとき_記事 Getting Started with Headless Chrome が言及した:

--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チームはSwiftShaderwithChrome =チームはGL content in He​​adless Modeをレンダリングするために使用を開始することを考えました。これには、次のようにいくつかの変更が必要でした。

  • SwiftShaderは、Window Systemから情報を取得しようとしたときに失敗するコードによるソフトウェア実装とは見なされないため、He​​adless ModeでGPUデータ収集をスキップします
  • osmesaを使用する場合は、InitializeStaticEGLInternalGL初期化のみをスキップしますSwiftShaderは初期化が必要です他の非ソフトウェア実装。
  • SwiftShaderMac OSXでは現在サポートされていないため、チームはそのプラットフォームのHe​​adless Mode物理GPを引き続き使用することにしました(すべてがソフトウェアでレンダリングされる他のプラットフォームとは異なります)。
  • そのため、ヘッドレスモードWebGLサポートを無効にするには、--disable-gpuおよび--disable-software-rasterizerを使用することにしました。

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には影響しません。当面はエラーを無視できます。

8
DebanjanB

同じ問題がありました。これらのフラグをChromeドライバーオプションに追加してみてください。

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

詳細については、このリンクを参照してください。

0
HalloFriend