Ich erhalte diese Fehlermeldung, wenn ich versuche, Code auf 2 von 3 Computern auszuführen:
[0502/155335.565:ERROR:gpu_process_transport_factory.cc(1007)] Lost UI shared context.
Hier ist der Code:
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")
Jetzt habe ich alle Systeme überprüft, sie laufen unter Windows 10 64-Bit, Google Chrome 64 Bit Version: 66.0.3359.139, Python 2.7 32-Bit, chromedriver.exe 32-Bit, pycharm 2018.1.1
komisch ist, wenn ich das ohne die kopflosen Optionen durchführe, dann funktioniert alles. Der Browser wird geöffnet, die I'm feeling lucky
-Taste wird gedrückt und ein Screenshot wird erstellt. Nur wenn ich das Headless-Bit hinzufüge, tritt dieser Fehler auf.
Ich bin mir nicht sicher, was auf einem System anders sein könnte, damit dies funktioniert, wenn die anderen Systeme dieselbe Software ausführen.
Als Headless Chrome erstmals als GA (Allgemeine Verfügbarkeit) von Google Team veröffentlicht wurde, wurde im Artikel Getting Started with Headless Chrome
Folgendes erwähnt:
--disable-gpu \ # Temporarily needed if running on Windows.
Eine Notiz wurde hinzugefügt als:
Im Moment sollten Sie auch das
--disable-gpu
-Flag einschließen, wenn Sie unter Windows laufen.
Gemäß der Diskussion Headless: make --disable-gpu flag unnecessary
war klar, dass:
Das
--disable-gpu
-Flag ist unter Linux oder Mac OSX nicht mehr erforderlich. Es wird auch unter Windows unnötig, sobald der FehlerSwiftShader fails an assert on Windows in headless mode
behoben wurde.
Wie in der Diskussion headless: Switch from osmesa to SwiftShader
als das Google/Chromium-Team beschlossen hat, SwiftShader mit Chrome zu versenden, dachte das Team daran, es zu verwenden, um GL) - Inhalt zu rendern in Headless-Modus. Dies erforderte einige Änderungen wie folgt:
Die Idee zu Support WebGL in headless
ist noch in Diskussion, aber SwiftShader fails an assert on Windows in headless mode
mit einem Fehler als:
[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
Dieser Fehler wirkt sich nicht auf Ihren @Test
aus und Sie können den Fehler vorerst ignorieren.
Ich hatte das gleiche Problem. Versuchen Sie, diese Markierungen den Chrome-Treiberoptionen hinzuzufügen:
options.add_arguments("--proxy-server='direct://'");
options.add_arguments("--proxy-bypass-list=*");