Fehler beim Ausführen von PhantomJS mit Selenium RemoteWebDriver

8

Ich starte einen Selen-Grid-Hub mit dem Standardstartbefehl

%Vor%

Und ich starte PhantomJS im Webdriver-Modus, auf demselben Rechner wie

%Vor%

Wenn PhantomJS startet, bekomme ich nichts als "Alle 'OK'" Nachrichten,

%Vor%

Aber wenn ich versuche, diesen Browser zu benutzen, mit

%Vor%

Betrachten Sie die Ausgabe von der PhantomJS-Programmdatei,

%Vor%

Alles scheint zu sein, aber der Code stürzt ab: / Ich bekomme einen großen Fehler StackTrace, hauptsächlich bis zu

%Vor%

Und wenn Sie die Ausgabe des Grid-Hub überprüfen,

%Vor%

Es scheint auch ein Problem zu geben. Es scheint, dass der Grid-Hub aus irgendeinem Grund keine Informationen aus der ausführbaren PhantomJS-Datei zurückbekommt, obwohl er scheint , als würde er Dinge richtig verarbeiten.

Zum Testen habe ich auch einen regulären Selenknoten, der auf demselben Rechner mit dem Befehl

läuft %Vor%

und wenn ich eine Firefox RemoteWebDriver-Sitzung (in Python) starte, mit

%Vor%

alles ist in Ordnung.

Es sieht so aus, als ob alles richtig eingerichtet ist, ich behalte die Dinge als "Vanille" und nah an dem, was die Docs sagen, wie möglich, aber ich komme hier einfach nicht über den Zaun.

Der genau gleiche Fehler tritt auf, wenn Sie auch in Java versuchen

%Vor%

Screenshot der Grid-Konsole mit beiden verbunden, PhantomJS ist lebendig und gut dort,

Links ist der Standard-Selenknoten, rechts ist PhantomJS (und 10.0.0.222 ist die IP-Adresse meines Laptops in Arbeit).

Und meine Versionen sind 1.9.2 für PhantomJS und offensichtlich 2.33.0 für Selen.

    
seaders 09.09.2013, 18:31
quelle

1 Antwort

11

Es stellt sich heraus, dass dies ein bug Feature in der Version 1.9.2 von phantomjs ist. Sie wurden auf die neueste Ghostdriver (v1.4) -Bibliothek aktualisiert und Ich stelle mir vor , wo sie eingeführt wurde. Ghostdriver hält sich an das neue Selenium-Protokoll, indem es Posts zum Erstellen von Sitzungen verwendet und keinen Standort-Header verwendet. Selenium greift nun den Ort usw. von der Json im Körper des Pfostens. Es stellt sich heraus, dass der Fehler, den Sie sehen und den ich gesehen habe, darin liegt, dass Sie das alte Selenium-Gefäß verwenden, das das alte Protokoll der Sitzungserstellung mit der neuen Version von Selen verwendet. Für jetzt ist die Antwort auf Ihre Frage , um zu phantomjs 1.9.1 zurückzukehren, um Ihr Selen-Glas auf 2.35.0 zu aktualisieren (siehe unten für Link). Um Ihren Fehler zu reproduzieren, habe ich sowohl mit dem Ruby- als auch mit dem Python-Selen-Webdriver und dem 2.33.0-Selenium-Jar als Hub und Phantomjs 1.9.2 als Ghostdriver-Worker getestet.

Hier ist der gleiche Fehler, der in einem GitHub-Problem beschrieben wurde:

Ссылка

Ich glaube, es hat mit diesem speziellen Commit zu tun. Sie können sehen, dass die Kopfzeile für "Location" entfernt wurde.

Ссылка

Hier ist die Beschreibung des Problems, gegen das das obige Commit gerichtet war: Ссылка

Von diesem können Sie sehen, dass es eine Reparatur war, um Sachen zu erhalten, die mit selen-webdrivers spätestem Protokoll arbeiten: "Neue Spezifikationen: Ссылка Änderung in Selen: Ссылка "

Es sieht auch so aus Die Aktualisierung auf den neuesten Selen-Webdriver-Standalone-Krug ermöglicht es Ihnen, 1.9.2 zum Laufen zu bringen. Ich habe bestätigt, dass mein Ruby-Webdriver nun erfolgreich eine Verbindung mit dem 2.35.0 jar und phantomjs 1.9.2 herstellen kann.

Sie können das neueste Glas hier bekommen:

Ссылка

    
Jesse Sanford 15.09.2013, 02:21
quelle