PhantomjsDriver funktioniert nicht auf Windows und Linux

Ich habe eine Anwendung, die verwendet Selenium Webdriver, um einige Informationen aus einer Website. Es funktioniert gut mit FirefoxDriver und ChromeDriver, aber wenn ich versuchte, Sie zu wechseln PhantomJSDriver, stieß ich auf einige Schwierigkeiten.

  1. Auf einem Windows-Rechner , es startet ganz normal, dann fängt er sofort spuckte Sie die folgenden Zeilen immer und immer wieder:

Jan 05, 2014 7:28:43 PM org.apache.http.impl.client.DefaultRequestDirector tryEx
ecute
INFO: I/O exception (org.apache.http.NoHttpResponseException) erwischt bei der Verarbeitung von Anfrage: Der Ziel-server nicht reagiert,

Dies wiederholt sich wahrscheinlich mehrere hundert mal für etwa 10 Minuten, bis es endlich lädt die Seite, und manchmal nicht einmal geschafft, es zu laden überhaupt.

  1. Auf einer Linux-Maschine, es versucht zu starten, dann gibt das folgende Ergebnis zurück:

Exception in thread "thread1"
org.openqa.Selen.remote.UnreachableBrowserException: Konnte nicht
starten Sie eine neue Sitzung. Mögliche Ursachen sind ungültige Adresse des remote -
server oder browser-start-up scheitern. Build info: version: 'unbekannt',
revision: 'unbekannt', time: 'unbekannt' System info: host: 'Saurier',
ip: '128.238.32.20', os.name: 'Linux', os.arch: 'amd64', os.version:
'2.6.32-39-generic', java.version: '1.7.0" Treiber-info:
- Treiber.version: PhantomJSDriver
bei org.openqa.Selen.remote.RemoteWebDriver.execute(RemoteWebDriver.java:548)
bei org.openqa.Selen.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:216)
bei org.openqa.Selen.remote.RemoteWebDriver.(RemoteWebDriver.java:111)
bei org.openqa.Selen.remote.RemoteWebDriver.(RemoteWebDriver.java:115)
bei org.openqa.Selen.phantomjs.PhantomJSDriver.(PhantomJSDriver.java:107)
bei org.openqa.Selen.phantomjs.PhantomJSDriver.(PhantomJSDriver.java:96)
Verursacht durch: org.openqa.Selen.WebDriverException: Timed out waiting for driver
server zu starten. Build info: version: 'unbekannt', revision: 'unbekannt',
Zeit: 'unbekannt' System info: host: 'Saurier', ip: '128.238.32.20',
os.name: 'Linux', os.arch: 'amd64', os.version: '2.6.32-39-generic',
java.version: '1.7.0" Driver info: driver.version: PhantomJSDriver
bei org.openqa.Selen.remote.service.DriverService.start(DriverService.java:165)
bei org.openqa.Selen.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:62)
bei org.openqa.Selen.remote.RemoteWebDriver.execute(RemoteWebDriver.java:527)
... 7 mehr Verursacht durch: org.openqa.Selen.net.UrlChecker$TimeoutException: Timeout warten
[http://localhost:16050/status] ab 20002 ms
bei org.openqa.Selen.net.UrlChecker.waitUntilAvailable(UrlChecker.java:104)
bei org.openqa.Selen.remote.service.DriverService.start(DriverService.java:163)
... 9 mehr Verursacht durch: com.google.common.util.gleichzeitige.UncheckedTimeoutException:
java.util.gleichzeitige.TimeoutException
bei com.google.common.util.gleichzeitige.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.java:143)
bei org.openqa.Selen.net.UrlChecker.waitUntilAvailable(UrlChecker.java:79)
... 10 mehr Verursacht durch: java.util.gleichzeitige.TimeoutException
bei java.util.gleichzeitige.FutureTask$Sync.innerGet(FutureTask.java:258)
bei java.util.gleichzeitige.FutureTask.bekommen(FutureTask.java:119)
bei com.google.common.util.gleichzeitige.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.java:130)
... 11 mehr

Was mache ich falsch? Ich habe viel gelesen über, wie Phantomjs ist so viel schneller als die anderen Fahrer, und möchte wirklich, es zu benutzen, aber wenn es 10 Minuten dauert das laden jeder Seite, das ist offensichtlich nicht möglich.

Ich bin mit Selenium WebDriver-version 2.38.0-und Phantomjs version 1.9.2.

Vielen Dank im Voraus,
bsg

BEARBEITEN
Nur um zu klären, ich glaube nicht, dass dies irgendetwas damit zu tun hat mit meinem code; Fehler, die sich auf Linux geworfen werden auf die Linie, wo ich versuche den PhantomJS-Treiber unten.

   DesiredCapabilities caps = new DesiredCapabilities();
    caps.setJavascriptEnabled(true);                       
    caps.setCapability(
        PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY,
        phantombinary//"/home/p/phantomjs-1.9.2-linux-x86_64/bin/phantomjs"
    );

    //Launch driver (will take care and ownership of the phantomjs process)
     WebDriver driver = new PhantomJSDriver(caps);
    System.out.println("starting driver");
danke für die Antwort. Ich glaube nicht, dass mein code ist der Schuldige, aber ich habe es trotzdem.
Dann bekomme ich eine Fehlermeldung, dass ich brauche, um geben Sie den Pfad der ausführbaren Datei. java.lang.IllegalStateException: Der Pfad zu den Treiber ausführbar gesetzt werden muss, durch die phantomjs.binären.Pfad-Fähigkeit/system Eigenschaft/variable PATH
Sorry - hätten Sie etwas dagegen, mir zu sagen, wie genau das zu tun? Ich sehe einige code in die docs, aber es ist ein bisschen verwirrend.
lassen Sie uns weiter, diese Diskussion im chat
Gut, ich habe es funktioniert (mit Fähigkeiten) auf Windows. Ich hatte einige andere Instanzen FFDriver laufen und wenn ich diese geschlossen, begann es zu arbeiten, ohne Fehler. Ich denke, es waren zu viele ports genommen? Würde immer noch lieben, um es arbeiten auf Linux.

InformationsquelleAutor bsg | 2014-01-06

Schreibe einen Kommentar