2016-06-17 17 views
1

Ich hoffe, jemand kann mir mit meinem phantomJS Problem helfen. Ich benutze Version 1.9.8 auf Unix 64bit als Knoten, der zu einem Selen-Hub registriert, der auf jenkins läuft. Wenn ich zu einer HTML-Seite mit einem Link navigiere (der keine ID oder name hat, deshalb adressiere ich ihn über xpath - Leider kann ich den HTML-Code nicht ändern, da es externe Eingabe ist), versuche ich darauf zu klicken um zur nächsten Seite zu gelangen. Mit Firefox-Treiber funktionierte dies ohne Probleme, und wenn ich einen lokalen Selen-Server (Windows, phantomJS v. 1.9.8) starte, funktioniert es auch.PhantomJS WebDriver kopflos: ".click" Methode hat keine Wirkung

Mein Code:

System.out.println("current url before click: " + getDriver().getCurrentUrl()); 
getDriver().findElement(By.xpath("//a")).click(); 
System.out.println("current url after click: " + getDriver().getCurrentUrl()); 

Ausgabe auf lokalen Selen (Fenster):

current url before click: https://initialpage.html 
current url after click: https://www.my-link.com 

Ausgabe auf Remote-Selen Raster (Unix):

current url before click: https://initialpage.html 
current url after click: https://initialpage.html 

Es gibt keinen Fehler oder ähnliches, es scheint nur wie der Fahrer auf der alten Seite bleibt. Ich habe bereits versucht, verschiedene phantomjs.cli.args während die WebDriver instanziiert wird, das Hinzufügen mehrere thread.sleep() ‚s und click() von

getDriver().navigate().to(getDriver().findElement(By.xpath("//a")).getAttribute("href")); 

ersetzt aber der Ausgang bleibt gleich.

Gerade falls es hier ankommt, ist, wie ich instanziiert die WebDriver:

driver = new RemoteWebDriver(new URL("http://servername:4444/wd/hub"), DesiredCapabilities.phantomjs()); 

Ich schätze jede mögliche Hilfe, vielen Dank für die Mühe, Jungs! Wenn noch Fragen offen sind, zögern Sie nicht zu fragen! Danke im Voraus!

Antwort

0

Also für den Fall, dass jemand über diesen Thread stolpert, habe ich es endlich nach Stunden der Verzweiflung herausgefunden. Das Problem war die Instanziierung des Webdrivers, dem eine ssl-Eigenschaft fehlte. So funktioniert es jetzt für mich:

final ArrayList<String> cliArguments = new ArrayList<String>(); 
cliArguments.add("--ssl-protocol=any"); 
final DesiredCapabilities dCap = DesiredCapabilities.phantomjs(); 
dCap.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, cliArguments); 
driver = new RemoteWebDriver(new URL("http://servername:4444/wd/hub"), dCap); 
+0

Das führt mich zu der Annahme, dass Sie nicht die gleiche PhantomJS-Version auf dem Server hatten. Vielleicht hatten Sie 1.9.7. Beachten Sie, dass PhantomJS 1.9.8, das über npm installiert wurde, eigentlich 1.9.7 ist, da ihre Versionierung beim Auftreten des Problems mit dem SSL-Protokoll nicht mehr funktionierte. –

+0

Hallo, ich habe 1.9.8 von phantomjs.org heruntergeladen, entpackte es auf meinem Unix-Rechner und setzte es als phantomjs.binary.path-Variable auf meinen Selenknoten (der sich an einem Hub registriert). Was anders war, ist die Selenserver-Version (aber das sollte die Phantomjs-Version, die ich passiere, nicht beeinflussen, oder?) – user3017641

+0

Hm, die Selenserverversion sollte hier keine Wirkung haben. –