PhantomjsDriver ne fonctionne pas sur Windows et Linux

J'ai une application qui utilise Selenium Webdriver pour obtenir des informations d'un site. Il fonctionne très bien avec FirefoxDriver et ChromeDriver, mais quand j'ai essayé de passer à PhantomJSDriver, j'ai rencontré quelques difficultés.

  1. Sur une machine Windows , il démarre normalement, puis commence immédiatement cracher les lignes suivantes:

Jan 05, 2014 7:28:43 PM org.apache.http.impl.client.DefaultRequestDirector tryEx
ecute
INFO: I/O exception (org.apache.http.NoHttpResponseException) pris lors du traitement de la demande: Le serveur cible n'a pas pu répondre

Ceci est répété probablement plusieurs centaines de fois pendant environ 10 minutes jusqu'à ce que finalement il charge la page; parfois, il n'arrivons même pas à le charger.

  1. Sur une machine Linux, il essaie de démarrer, puis renvoie les éléments suivants:

Exception in thread "thread1"
org.openqa.le sélénium.à distance.UnreachableBrowserException: ne Peut pas
démarrer une nouvelle session. Les causes possibles sont invalide adresse de la télécommande
serveur ou de démarrage du navigateur échec. Construire info: version: 'inconnue',
révision: "inconnu", le temps: "inconnu" System info: accueil: 'pangolin',
ip: '128.238.32.20', os.nom: "Linux", os.arc: amd64, os.version:
'2.6.32-39-generic", de java.version: '1.7.0 Driver info:
le pilote.version: PhantomJSDriver
au org.openqa.le sélénium.à distance.RemoteWebDriver.execute(RemoteWebDriver.java:548)
au org.openqa.le sélénium.à distance.RemoteWebDriver.startSession(RemoteWebDriver.java:216)
au org.openqa.le sélénium.à distance.RemoteWebDriver.(RemoteWebDriver.java:111)
au org.openqa.le sélénium.à distance.RemoteWebDriver.(RemoteWebDriver.java:115)
au org.openqa.le sélénium.phantomjs.PhantomJSDriver.(PhantomJSDriver.java:107)
au org.openqa.le sélénium.phantomjs.PhantomJSDriver.(PhantomJSDriver.java:96)
Causés par: org.openqa.le sélénium.WebDriverException: expiration du délai d'attente pour le conducteur
serveur pour démarrer. Construire info: version: 'inconnue', de révision: 'inconnue',
le temps: "inconnu" System info: accueil: 'pangolin", ip: '128.238.32.20',
os.nom: "Linux", os.arc: amd64, os.version: '2.6.32-39-générique",
java.version: '1.7.0' informations sur les pilotes: pilote.version: PhantomJSDriver
au org.openqa.le sélénium.à distance.service.DriverService.start(DriverService.java:165)
au org.openqa.le sélénium.à distance.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:62)
au org.openqa.le sélénium.à distance.RemoteWebDriver.execute(RemoteWebDriver.java:527)
... 7 plus Causée par: org.openqa.le sélénium.net.UrlChecker$TimeoutException: expiration du délai d'attente
pour [http://localhost:16050/status] pour être disponible après 20002 ms
au org.openqa.le sélénium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:104)
au org.openqa.le sélénium.à distance.service.DriverService.start(DriverService.java:163)
... Plus de 9 Causés par: com.google.commun.util.de façon concomitante.UncheckedTimeoutException:
java.util.de façon concomitante.TimeoutException
au com.google.commun.util.de façon concomitante.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.java:143)
au org.openqa.le sélénium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:79)
... 10 plus Causée par: java.util.de façon concomitante.TimeoutException
à java.util.de façon concomitante.FutureTask$De Synchronisation.innerGet(FutureTask.java:258)
à java.util.de façon concomitante.FutureTask.get(FutureTask.java:119)
au com.google.commun.util.de façon concomitante.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.java:130)
... 11 plus

Ce que je fais mal? J'ai lu beaucoup de choses sur la façon Phantomjs est beaucoup plus rapide que les autres pilotes, et voudrais vraiment l'utiliser, mais si il faut 10 minutes pour charger chaque page, ça n'est évidemment pas possible.

Je suis en cours d'exécution Selenium WebDriver version 2.38.0 et Phantomjs la version 1.9.2.

Je vous remercie beaucoup à l'avance,
bsg

MODIFIER
Juste pour clarifier, je ne pense pas que cela n'a rien à voir avec mon code; les erreurs sur Linux sont jetés sur la ligne où je tente de démarrer le PhantomJS pilote, ci-dessous.

   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");
merci pour la réponse. Je ne pense pas que mon code est le coupable, mais je n'ai pas posté de toute façon.
Puis je reçois un message d'erreur indiquant que j'ai besoin de spécifier l'emplacement de l'exécutable. java.lang.IllegalStateException: Le chemin d'accès au pilote de l'exécutable doit être fixé par la phantomjs.binaires.chemin de la capacité/système de propriété/variable de CHEMIN d'accès
Désolé, pourriez-vous me dire exactement comment le faire? Je vois un peu de code dans les docs, mais c'est un peu déroutant.
laissez-nous continuer cette discussion dans le chat
Eh bien, je l'ai eu à travailler (avec des capacités) sur Windows. J'ai eu quelques autres instances de FFDriver de course et quand je l'ai fermé, il a commencé à travailler sans erreurs. Je pense qu'il y avait trop de ports prises? Serait encore de l'amour pour le faire fonctionner sur Linux.

OriginalL'auteur bsg | 2014-01-06