Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 向maven项目添加PhantomJS二进制文件的更好方法?_Java_Maven_Selenium Webdriver_Phantomjs_Phantomjs Maven Plugin - Fatal编程技术网

Java 向maven项目添加PhantomJS二进制文件的更好方法?

Java 向maven项目添加PhantomJS二进制文件的更好方法?,java,maven,selenium-webdriver,phantomjs,phantomjs-maven-plugin,Java,Maven,Selenium Webdriver,Phantomjs,Phantomjs Maven Plugin,我尝试使用phantomjs maven插件安装phantomjs二进制文件。我想在Tomcat7服务器上运行测试,这就是我需要自动配置二进制文件的原因 这是我的pom.xml 1.2.0 1.9.7 0.7 org.seleniumhq.selenium 硒爪哇 2.47.1 com.github.detro 幻影驱动程序 ${ghostdriver.version} org.glassfish.jersey.containers jersey容器servlet 2.21 org.glass

我尝试使用phantomjs maven插件安装phantomjs二进制文件。我想在Tomcat7服务器上运行测试,这就是我需要自动配置二进制文件的原因

这是我的pom.xml


1.2.0
1.9.7
0.7
org.seleniumhq.selenium
硒爪哇
2.47.1
com.github.detro
幻影驱动程序
${ghostdriver.version}
org.glassfish.jersey.containers
jersey容器servlet
2.21
org.glassfish.jersey.core
泽西岛客户
2.21
org.glassfish.jersey.media
泽西媒体公司
2.21
src
maven编译器插件
3.3
1.8
1.8
maven战争插件
2.6
网络内容
假的
com.github.klieber
PhantomJSMaven插件
${phantomjs maven plugin.version}
安装
1.9.7
org.apache.maven.plugins
maven surefire插件
2.17
${phantomjs.binary}
下面是我初始化webdriver的过程……只需查看构造函数并跳到底部的main()函数

公共类FindTrains{
私有网络驱动程序;
//私人网络驱动器,它等待;
JavascriptExecutor js;
字符串baseURL=”http://www.indianrail.gov.in/inet_Srcdest.html";
公共财政培训{
driver=新的PhantomJSDriver();
//((HtmlUnitDriver)driver).setJavascriptEnabled(true);
//等待=新的WebDriverWait(驱动程序,2);
js=(JavascriptExecutor)驱动程序;
}
public void getTrains(String src、String dest){
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元素,字符串值){
String scriptSetAttrValue=“参数[0]。setAttribute(参数[1],参数[2]);”;
executeScript(scriptSetAttrValue,elem,“value”,value);
}
公共静态void main(字符串[]args){
System.out.println(System.getProperty(“phantomjs.binary”);
新的FindTrains().getTrains(“nad”、“NDL”);
}
} 
所以问题是,我无法验证我的二进制文件是否已安装……即使安装了,为什么
main()会为system.property(“phantomjs.binary”)

我提供了完整的pom.xml和java代码。。。请帮我看看我是什么 做错

编辑:


在main()函数中,我通过创建
FindTrains
的对象并对该对象调用
getTrains()
来调用
FindTrains
。但是由于缺少二进制文件,
driver
未配置,
main()
的第一行打印
null

,因此未设置系统属性的原因是您正在使用
maven-surefire-plugin
对其进行设置。这就是在maven测试阶段运行所有JUnit测试的插件。因此,surefire执行的任何JUnit测试都将具有可用的系统属性。但是,听起来您运行的是类的
main()
方法,而不是JUnit,因此系统属性当然不存在

我真的不清楚你到底在做什么/期待什么。这个测试是作为maven构建过程的一部分运行的吗?这就是构建phantomjs maven插件的目的,它不是为了将phantomjs嵌入Java应用程序而构建的。

您可以使用它。只需添加以下依赖项:

<dependency>
   <groupId>io.github.bonigarcia</groupId>
   <artifactId>webdrivermanager</artifactId>
    <version>4.4.3</version>
</dependency>

WebDriverManager下载所需PhantomJS二进制文件的最新版本,以便与Selenium WebDriver一起使用。

这一点还不清楚。如何调用
FindTrains
?另外,请发布一个再现问题的小示例,以便人们更容易再现问题并解决它。再次感谢您指出原因,但我想知道是否有一种方法或可能的解决方法可以在maven构建过程中将phantomjs嵌入Java应用程序中。它是否可以在Tomcat7中工作……我的意思是将phantomjs嵌入服务器上的Java应用程序中。
WebDriverManager.phantomjs().setup();