Ausnahme beim Ausführen von Selenium auf einer AWS EC2-Instanz

Ausnahme beim Ausführen von Selenium auf einer AWS EC2-Instanz

Ich stoße auf diese Ausnahme, wenn ich einen Selenium-Testfall mit dem Firefox-Treiber auf der AWS EC2-Instanz ausführe, die der Headless-Server ist. Ich habe Firefox und alle dafür erforderlichen Änderungen installiert

org.openqa.selenium.WebDriverException: org.openqa.selenium.WebDriverException: Verbindung zum binären FirefoxBinary(/opt/firefox/firefox-bin) auf Port 7055 konnte nicht hergestellt werden; Prozessausgabe folgt: �*** e = [Ausnahme... „Komponente hat Fehlercode zurückgegeben: 0x80570016 (NS_ERROR_XPC_GS_RETURNED_FAILURE) [nsIJSCID.getService]“ nsresult: „0x80570016 (NS_ERROR_XPC_GS_RETURNED_FAILURE)“ location: „JS frame :: chrome://browser/content/utilityOverlay.js :: getShellService :: line 339“ data: no]

Kann mir bitte jemand bei dieser Ausnahme helfen?

Antwort1

Installieren Sie zuerst xvfb, damit Sie es mit einem „virtuellen Bildschirm“ ausführen können.

sudo yum -y install xorg-x11-server-Xvfb 

Dann sollten Sie sich diesen hilfreichen Beitrag ansehen, der Ihnen dabei hilft, Firefox auf Amazon EC2 zu installieren. Dies liegt daran, dass Sie nicht einfach sudo yum install firefox auf EC2 ausführen können. Im Grunde erstellen Sie also eine Datei (ich habe diese verwendetKern) auf der von ihm bereitgestellten EC2-Instanz und führen Sie es dann aus, um Firefox und alle davon abhängigen Komponenten zu installieren. http://joekiller.com/2012/06/03/install-firefox-on-amazon-linux-x86_64-compiling-gtk/

Wenn das Skript ausgeführt wird, installiert es Firefox in

/usr/local/bin/firefox

standardmäßig, glaube ich.

Sobald es installiert ist, müssen Sie es wahrscheinlich zu Ihrem Pfad hinzufügen, wie der obige Link ebenfalls erklärt. Sie sollten jedoch auch die Systemvariable DISPLAY hinzufügen, also machen Sie so etwas wie das hier...

cat << EOF >> ~/.bashrc
PATH=/usr/local/bin:\$PATH
DISPLAY=:99
export PATH
export DISPLAY
EOF

Dann müssen Sie xvfb für Bildschirm 99 starten, damit Firefox auf seinem „virtuellen Bildschirm“ ausgeführt werden kann. So wie hier...

Xvfb :99 -screen 0 1024x768x16 &

Wenn Sie dann Ihre Selenium-Tests erneut ausführen, wird Firefox hoffentlich auf dem Pfad gefunden und auf dem richtigen „virtualisierten“ Bildschirm auf dieser EC2-Instanz ausgeführt.

Nebenbemerkung: Ich bin keineswegs ein Experte irgendeiner Art für Amazon Linux, also … viel Glück.

Alternativ könnten Sie die Ausführung auf einem Selenium-Server prüfen, den Sie auf einer Amazon EC2 Ubuntu-Mikroinstanz starten könnten, die Sie problemlos mit einer GUI einrichten können.

Antwort2

Verbindung zum binären FirefoxBinary(/opt/firefox/firefox-bin) auf Port 7055 konnte nicht hergestellt werden

Sie müssen Ihren Selenium-Server aktualisieren (auf 2.53.x), damit er Ihre neuere Version von Firefox unterstützen kann. Alternativ können Sie einen anderen Webtreiber verwenden (z. B. Chrome).

Wenn Sie Maven verwenden, sind hier die zu verwendenden Zeilen pom.xml:

<dependency>
  <groupId>org.seleniumhq.selenium</groupId>
  <artifactId>selenium-java</artifactId>
  <version>2.53.1</version>
  <scope>test</scope>
</dependency>

Sehen:

verwandte Informationen