How to walk the PhantomJS path to selenium mesh

I get an error when trying to configure phantomjs node on Selenium Grid ( https://wiki.jenkins-ci.org/display/JENKINS/Selenium+Plugin )

I configured the following json configuration:

{ "capabilities": [ { "browserName": "phantomjs", "phantomjs.binary.path": "/usr/bin/phantomjs", "platform": "LINUX", "maxInstances": 5 } ], "configuration": { "nodeTimeout":120, "port":5555, "hubPort":4444, "hubHost":"localhost", "nodePolling":2000, "registerCycle":10000, "register":true, "cleanUpCycle":2000, "timeout":30000, "maxSession":1 } } 

But I get an error when starting webdriver:

 WebDriverException: Message: The path to the driver executable must be set by the phantomjs.binary.path capability/system property/PATH variable; for more information, see https://github.com/ariya/phantomjs/wiki. The latest version can be downloaded from http://phantomjs.org/download.html Stacktrace: at com.google.common.base.Preconditions.checkState (Preconditions.java:199) at org.openqa.selenium.phantomjs.PhantomJSDriverService.findPhantomJS (PhantomJSDriverService.java:236) at org.openqa.selenium.phantomjs.PhantomJSDriverService.createDefaultService (PhantomJSDriverService.java:181) at org.openqa.selenium.phantomjs.PhantomJSDriver.<init> (PhantomJSDriver.java:104) at sun.reflect.NativeConstructorAccessorImpl.newInstance0 (NativeConstructorAccessorImpl.java:-2) at sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance (Constructor.java:526) at org.openqa.selenium.remote.server.DefaultDriverProvider.callConstructor (DefaultDriverProvider.java:103) at org.openqa.selenium.remote.server.DefaultDriverProvider.newInstance (DefaultDriverProvider.java:97) at org.openqa.selenium.remote.server.DefaultDriverFactory.newInstance (DefaultDriverFactory.java:60) at org.openqa.selenium.remote.server.DefaultSession$BrowserCreator.call (DefaultSession.java:222) at org.openqa.selenium.remote.server.DefaultSession$BrowserCreator.call (DefaultSession.java:1) at java.util.concurrent.FutureTask.run (FutureTask.java:262) at org.openqa.selenium.remote.server.DefaultSession$1.run (DefaultSession.java:176) at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:615) at java.lang.Thread.run (Thread.java:745) -------------------- >> begin captured logging << -------------------- selenium.webdriver.remote.remote_connection: DEBUG: POST http://127.0.0.1:4444/wd/hub/session {"desiredCapabilities": {"browserName": "phantomjs"}} selenium.webdriver.remote.remote_connection: DEBUG: Finished Request 

If I stop the node launched by the plugin (and support the plugin hub) and manually start my own node as follows, it works fine:

 java -jar selenium-server-standalone-2.53.0.jar -role webdriver -browser browserName=phantomjs,platform=LINUX -hub http://localhost:4444/grid/register 

[edit] phantomjs is executable from the shell and lives in / usr / bin / phantomjs:

 $ whereis phantomjs phantomjs: /usr/bin/phantomjs 

I can’t find the canonical description of the phantomjs online installation, and this is not one of the default browser options provided by the plugin.


The problem with the above was OS resolution on /usr/bin/phantomjs ; I needed to do chmod a+x on it.


Friendly adding this extra problem

This works (manually triggered by me):

/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.111.x86_64/jre/bin/java -jar /var/lib/jenkins/selenium-server-standalone-2.53.0.jar -role webdriver -browser browserName=phantomjs,platform=LINUX -hub http://localhost:4444/grid/register

This does not happen (the process started by the selenium plugin):

/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.111.x86_64/jre/bin/java -cp /var/cache/jenkins/war/WEB-INF/lib/remoting-2.56.jar hudson.remoting.Launcher -cp /var/lib/jenkins/selenium-server-standalone-2.53.0.jar:/var/lib/jenkins/htmlunit-driver-standalone-2.20.jar -connectTo localhost:36322

Error starting test: PHPUnit_Extensions_Selenium2TestCase_WebDriverException: The process has not exited yet therefore no result is available

+6
source share
3 answers

Adding an answer in case someone skips a comment.

Please check if phantomjs has "x" (execute) access for all users. If not, use the command to change access.

 chmod +x /usr/bin/phantomjs 

The new error "The process has not yet come out, therefore the result is not available" basically comes with a mismatch of the version of selenium / driver. You can try lowering the version of selenium.

Btw, which version of phantoms are you using.

+3
source

Try adding -Dphantomjs.binary.path=/usr/bin/phantomjs to your Java flags for Jenkins (usually see /etc/default/jenkins or /etc/sysconfig/jenkins ).

0
source

juste add the path to the command line as follows:

 '/usr/bin/java' -Dphantomjs.binary.path='/home/john/.local/share/binman_phantomjs/linux64/2.1.1/phantomjs-2.1.1-linux-x86_64/bin/phantomjs' -jar '/home/john/.local/share/binman_seleniumserver/generic/3.0.1/selenium-server-standalone-3.0.1.jar' 
0
source

All Articles