我正在将无头Ubuntu服务器设置为节点。这个节点通过Chromedriver运行Chrome,当我通过bash启动jar时,我能够运行测试。这是我正在使用的命令:
java -jar /opt/selenium-server-standalone-2.39.0.jar -role node -hub
http://qwautomation02:4444/grid/register -port 5555
-Dwebdriver.chrome.driver=/opt/chromedriver.exe -nodeConfig /mnt/smb/Configuration/nodeConfig.json
我编写了一个Java应用程序来运行此命令,并将正在使用的端口插入到数据库中。此应用程序使用相同的bash命令启动上面的Selenium服务器。我从/ opt目录启动这个jar,这个目录是Selenium服务器jar所在的目录。这是适用的方法:
public static Process startupNode(int portNumber, String browser) throws IOException{
//If Linux, else Windows.
String port = String.valueOf(portNumber);
if (Portability.isUnix()) {
return Runtime.getRuntime().exec(String.format("java -jar /opt/selenium-server-standalone-2.39.0.jar -role node -hub http://qwautomation02:4444/grid/register -port %s -Dwebdriver.chrome.driver=/opt/chromedriver -nodeConfig /mnt/smb/Configuration/nodeConfig.json"
, port));
}
else
return Runtime.getRuntime().exec(String.format("java -jar C:\\Selenium\\vendor\\selenium-server-standalone-2.39.0.jar -role node -hub http://qwautomation02:4444/grid/register -port %s -Dwebdriver.chrome.driver=C:\\Chromedriver\\chromedriver.exe -nodeConfig \\\\qwautomation02\\WebDriver\\Configuration\\nodeConfig.json"
, port));
}
我可以开始测试和部分运行,但是这个异常总是在执行期间抛出而无法捕获。
在执行中期,会话似乎正在失去与中心的通信。但是,考虑到当我手动运行bash命令时测试将完成,我不知道为什么会发生这种情况。
答案 0 :(得分:1)
这听起来像是一个Ubuntu权限错误。您的个人Ubuntu用户具有执行访问权限,但运行java文件的用户/进程可能没有。