Fehler beim Ausführen von Headless Firefox über Selen


7

Ich versuche, Headless Firefox auf dem Remote-Computer (unter Ubuntu 16.04) über Selenium über SSH auszuführen. Dies gibt mir jedoch den Fehler "Fehler: GDK_BACKEND stimmt nicht mit verfügbaren Anzeigen überein". Auf meinem Host-Computer wird Windows ausgeführt. Ich möchte die grafische Ausgabe nicht sehen. Es wird nur für Selentests verwendet.

Ich verwende X Virtual Frame Buffer als Dummy-Treiber:

Xvfb :10 -screen 0 1024x768x16 &

Ich habe auch die Umgebungsvariable DISPLAY mit dem Wert 10 für diesen speziellen Fall exportiert.

Wo gehe ich falsch?

BEARBEITEN: Wenn ich nach dem Ausführen von xvbf einfach "sudo Firefox" in meiner Befehlszeile über SSH ausführe, werden keine Fehler ausgegeben. Fehler werden nur ausgelöst, wenn Firefox durch Selen läuft.

Mehr Details:-

Ich rufe Firefox durch Selen. Der genaue Fehler, den der Selenium-Standalone-Server ausgibt, ist: -

17:52:55.218 INFO - Executing: [new session: Capabilities     [{browserName=firefox, platform=ANY,     firefox_profile=UEsDBBQAAAAAAJuOD0nf9RXUMgAAA...}]])
17:52:55.230 INFO - Creating a new session for Capabilities   [{browserName=firefox, platform=ANY, firefox_profile=UEsDBBQAAAAAAJuOD0nf9RXUMgAAA...}]
org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host     127.0.0.1 on port 7055 after 45000 ms. Firefox console output:
Error: GDK_BACKEND does not match available displays

Anscheinend wird Ubuntu nicht xinitstandardmäßig installiert, sodass Firefox möglicherweise nicht feststellen kann, dass es xorg als Backend verwenden sollte.
Gro♀

@gro♀ Ich kenne xserver nicht wirklich in der Tiefe. Können Sie bitte erklären, warum ich xinit brauche?
Goluhaque

Es ist nur wegen der Variablen GDK_BACKENDder einzige Ort, von dem ich weiß, dass er verwendet wird , um GTK zur Verwendung zu zwingenwayland . In diesem Fall würde es auf gesetzt werden GDK_BACKEND=wayland. Das Äquivalent für xorg wäre GDK_BACKEND=xinit(aber das ist eine Vermutung).
gro♀

Anscheinend ist dies auf die Inkompatibilität zwischen Firefox 48 und Selen zurückzuführen (die Selenerweiterung ist in Firefox 48 nicht signiert, und in Firefox 48 werden nur signierte Erweiterungen ausgeführt). Ich habe gerade Chrom verwendet.
Goluhaque

Antworten:


2

Anscheinend ist dies auf die Inkompatibilität zwischen Firefox 48 und Selen zurückzuführen (die Selenerweiterung ist in Firefox 48 nicht signiert, und in Firefox 48 werden nur signierte Erweiterungen ausgeführt). Ich habe nur Chrom verwendet, da mein Anwendungsfall nicht extrem browserspezifisch war.


2

Ich habe dieses Problem mit Firefox gelöst. Die Schritte sind:

  1. Firefox von 49.0 auf 46.0 herabgestuft
  2. Installieren Sie XVFB per Befehl sudo apt-get install xvfb
  3. Führen Sie Selenium mit dem Befehl aus xvfb-run java8 -jar selenium-project.jar

Meine Selenium Version ist 2.53.1und Ubuntu 14.04.


0

Ich weiß nicht, warum die DISPLAYMethode env variable nicht funktioniert hat, aber ich habe xvfb-run <command>(in meinem Fall xvfb-run npm test) auf using umgestellt und es hat großartig funktioniert! :) :)


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.