webentwicklung-frage-antwort-db.com.de

ChromeDriver zeigt den freigegebenen Kontext der verlorenen Benutzeroberfläche

Ich habe einen Windows 10-Laptop, auf dem eine virtuelle Windows 7-Maschine ausgeführt wird. Wenn ich den WebDriver in der virtuellen Maschine starte, wird der Fehler gpu_process_transport_factory.cc <1009> Lost UI Shared Context angezeigt, wenn er gestartet wird:

IWebDriver driver = new ChromeDriver() //This causes the 1009 Error

 ERROR

Variiert dann auch für Abfragen der Stereoaufnahme fehlgeschlagen und Senden von GpuChannelMsg_CreateCommandBuffer fehlgeschlagenund _ ​​Befehlsbuffer_proxy_impll.cc <115> Shared Memory-Handle ist nicht gültig.

Dies ist seit Monaten und es wurden keine Änderungen vorgenommen (dieser WebDriver ist der einzige Zweck der virtuellen Maschine), der Laptop, auf dem er läuft, läuft einwandfrei (dh keine GPU-Probleme). Der WebDriver navigiert weiterhin durch Seiten, gibt jedoch weitere Fehler und 10x langsamer.

EDIT: Auf ChromeDriver auf 2.35 aktualisiert und immer noch dasselbe Verhalten.

9
Tiago

Headless Chrome wurde in Chrome 59 von Google Team ausgeliefert, wodurch eine Möglichkeit geschaffen wurde, den Chrome Browser in einer Headless-Umgebungauszuführen. _. 

Eine Notiz wurde hinzugefügt als:

Headless mode has been available on Mac and Linux since Chrome 59. Windows support came in Chrome 60.

Der Artikel Getting Started with Headless Chrome erwähnte Folgendes:

--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 Fehler SwiftShader fails an assert on Windows in headless mode behoben wurde.

Was ist unter der Haube passiert?

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 content in Headless-Modus. Dies erforderte einige Änderungen wie folgt:

  • Überspringen Sie die GPU-Datenerfassung in Headless Mode, da SwiftShader von diesem Code nicht als Softwareimplementierung betrachtet wird, die zu einem Fehler führt, wenn wir versuchen, Informationen aus dem Window-System abzurufen.
  • Überspringen Sie GL -Initialisierung in InitializeStaticEGLInternal, wenn Sie osmesa verwenden möchten. SwiftShader erfordert eine Initialisierung wie die anderen Nicht-Software-Implementierungen.
  • SwiftShader wird derzeit nicht von Mac OSX unterstützt. Daher entschied sich das Team, die physische GPU in Headless Mode auf dieser Plattform (anders als.) Zu verwenden auf anderen Plattformen, auf denen alles Software ist).
  • Um die Unterstützung von WebGL in Headless Modezu deaktivieren, entschieden sie sich für --disable-gpu und --disable-software-rasterizer.

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

Fazit

Dieser Fehler wirkt sich nicht auf Ihren @Test aus und Sie können den Fehler vorerst ignorieren.

7
DebanjanB

Dies scheint ein Problem mit der neuesten Version von Chrome (65.0.3325.146) zu sein. Durch das Zurücksetzen auf eine frühere Version von Chrome (64.0.3282.186) ist das Problem für mich verschwunden.

Wird weiter nachforschen und hier aktualisieren, wenn ich weitere Informationen finde. Als temporäre Lösung können Sie Chrome deinstallieren und Version 64.0.3282.186 installieren.

3
Tim Trewartha

'Lost UI Shared Context' wurde für einen Fehler verwechselt, während es sich tatsächlich um eine Protokollausgabe handelt. 

Dies wurde seit Chrome 72.0 behoben. keine zusätzlichen Argumente erforderlich.

1
Sajuuk