无法从OSX上的java .app启动Phantomjs驱动程序

时间:2016-04-01 19:39:28

标签: java macos selenium jar phantomjs

我在Java上创建了一个启动phantomjs驱动程序的应用程序。

我的程序在使用以下行从eclipse启动时成功创建了phantomjs驱动程序:

DesiredCapabilities desireCaps = new DesiredCapabilities();
desireCaps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, directory + "/phantomjs");
desireCaps.setCapability("phantomjs.cli.args", Collections.singletonList("--ignore-ssl-errors=true"));
desireCaps.setCapability("phantomjs.page.settings.userAgent", "Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0");
driver = new PhantomJSDriver(desireCaps);

我创建了一个.app:

enter image description here

其中" MainJar.jar"是eclipse生成的jar, "发射器"是基本上java -jar MainJar.app和" phantomjs"是selenium phantomjs官方可执行文件。

当我从" .app"启动应用程序时,我在driver = new PhantomJSDriver(desireCaps);上收到以下错误:

  

无法启动新会话。可能的原因是远程服务器的无效地址或浏览器启动失败。   构建信息:版本:'未知',修订版:'未知',时间:'未知'   系统信息:主持人:' Air-de-Me',ip:' XXX.XXX.X.XX',os.name:' Mac OS X', os.arch:' x86_64',os.version:' 10.10.5',java.version:' 1.8.0_73'   驱动程序信息:driver.version:PhantomJSDriver

然而,当我通过启动"启动器"来运行应用程序时脚本,应用程序成功创建驱动程序。我的第一个是#34; app"找不到phantomjs驱动程序,因为路径设置不正确,但我在日志中打印(phantomjs_file).exists();并且找到了正确的。

我已经使用chmod 777为我的应用程序中的每个文件和应用程序本身设置了权限,只是为了排除权限错误。

浏览器无法初始化是否有原因?

非常欢迎任何帮助。

1 个答案:

答案 0 :(得分:1)

我找到了问题的答案。问题是当从" .app"运行时,phantomjs无法获得编写自己的日志文件的权限。

我找到了一种方法(唯一对我有用的方法),禁用phantomjs日志写入:

driver = new PhantomJSDriver(new PhantomJSDriverService.Builder()
        .usingPhantomJSExecutable(new File("PATH_TO_EXECUTABLE"))
        .withLogFile(null).build(), 
        desireCaps);