Meilleure façon d'ajouter de PhantomJS binaire à un projet maven?

J'ai essayé d'utiliser le phantomjs-maven-plugin à installer phantomjs binaire. Je voulais courir mes tests sur un Tomcat7 serveur c'est pourquoi j'ai besoin de configurer binaire automatiquement.

Voici mon pom.xml

<properties>
<ghostdriver.version>1.2.0</ghostdriver.version>
<phantomjs.version>1.9.7</phantomjs.version>
<phantomjs-maven-plugin.version>0.7</phantomjs-maven-plugin.version>
</properties>
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.47.1</version>
</dependency>
<dependency>
<groupId>com.github.detro</groupId>
<artifactId>phantomjsdriver</artifactId>
<version>${ghostdriver.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<!-- if your container implements Servlet API older than 3.0, use "jersey-container-servlet-core" -->
<artifactId>jersey-container-servlet</artifactId>
<version>2.21</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.21</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.21</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<groupId>com.github.klieber</groupId>
<artifactId>phantomjs-maven-plugin</artifactId>
<version>${phantomjs-maven-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>install</goal>
</goals>
</execution>
</executions>
<configuration>
<version>1.9.7</version>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.17</version>
<configuration>
<systemPropertyVariables>
<phantomjs.binary>${phantomjs.binary}</phantomjs.binary>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</build>

Et puis ici, c'est la façon dont je suis l'initialisation de la webdriver ....il suffit de regarder le constructeur et passez à la fonction main() en bas

public class FindTrains {
private WebDriver driver;
//private WebDriverWait wait;
JavascriptExecutor js;
String baseURL = "http://www.indianrail.gov.in/inet_Srcdest.html";
public FindTrains(){
driver = new PhantomJSDriver();
//((HtmlUnitDriver)driver).setJavascriptEnabled(true);
//wait = new WebDriverWait(driver, 2);
js = (JavascriptExecutor) driver;
}
public void getTrains(String src, String dest){
driver.get(baseURL);    
WebElement elemSrc =  driver.findElement(By.xpath(xpathSrc));
setAttributeValue(elemSrc, src.toUpperCase());
WebElement elemDest = driver.findElement(By.xpath(xpathDest));
setAttributeValue(elemDest, dest.toUpperCase());        
WebElement elemGetDetails = driver.findElement(By.xpath("//*[@id='formId']/table/tbody/tr/td/table/tbody/tr[2]/td[2]/table/tbody/tr/td/table/tbody/tr[16]/td[2]/input[1]"));
elemGetDetails.click();
System.out.println(driver.getCurrentUrl()+ " "+ driver.getTitle());
}
public void setAttributeValue(WebElement elem, String value){
String scriptSetAttrValue = "arguments[0].setAttribute(arguments[1],arguments[2]);";        
js.executeScript(scriptSetAttrValue, elem, "value", value);
}
public static void main(String [] args){
System.out.println(System.getProperty("phantomjs.binary"));
new FindTrains().getTrains("nad", "ndls");
}
} 

Donc, le problème est que je suis incapable de vérifier que mes si le binaire a été installé ou pas ....et même si c'était le cas, pourquoi ne main() prints null for system.property("phantomjs.binary")

J'ai fourni mon complet pom.xml de code java et... merci de m'aider à voir ce que je suis
fais de mal

Edit:

Dans la fonction main (), j'invoque FindTrains par la création d'un objet de FindTrains et de l'appel de getTrains() sur cet objet. mais depuis le driver n'est pas configuré en raison du manque d'binaire ....la première ligne de main() imprime null.

  • C'est vraiment pas clair. Comment est FindTrains invoquée? Aussi, s'il vous plaît poster un mininal exemple de reproduire le problème de sorte qu'il est plus facile pour les gens à reproduire le problème et de le résoudre.