linux - 带有 PhantomJS 的 WebDriverJS 可以在 OSX 上运行,但不能在 Linux 上运行

标签 linux node.js selenium phantomjs webdriver-io

我结合使用了:

每个组件单独工作正常,当我运行时:

var client = webdriverjs.remote({ 
    desiredCapabilities: { 
        browserName: 'phantomjs',  
        'phantomjs.binary.path': '/path-to/node_modules/phantomjs/bin/phantomjs'
    }, 
    logLevel: 'silent' 
});

client.init();

它在 OSX/Mac 上运行良好,但在我们的 CI Linux 服务器 (Ubuntu) 上,我收到以下错误消息;

PhantomJS is launching GhostDriver...
Unable to open file '/path/to/phantomjsdriver.log'

在不可避免的 Java 堆栈跟踪之前...

Driver info: driver.version: unknown
    at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
    at java.util.concurrent.FutureTask.get(FutureTask.java:83)
    at org.openqa.selenium.remote.server.DefaultSession.execute(DefaultSession.java:176)
    at org.openqa.selenium.remote.server.DefaultSession.<init>(DefaultSession.java:112)
    at org.openqa.selenium.remote.server.DefaultSession.createSession(DefaultSession.java:89)
    at org.openqa.selenium.remote.server.DefaultDriverSessions.newSession(DefaultDriverSessions.java:110)
    at org.openqa.selenium.remote.server.handler.NewSession.handle(NewSession.java:57)
    at org.openqa.selenium.remote.server.handler.NewSession.handle(NewSession.java:1)
    at org.openqa.selenium.remote.server.rest.ResultConfig.handle(ResultConfig.java:112)
    at org.openqa.selenium.remote.server.JsonHttpCommandHandler.handleRequest(JsonHttpCommandHandler.java:173)
    at org.openqa.selenium.remote.server.DriverServlet.handleRequest(DriverServlet.java:200)
    at org.openqa.selenium.remote.server.DriverServlet.doPost(DriverServlet.java:162)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.openqa.selenium.remote.server.DriverServlet.service(DriverServlet.java:128)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at org.openqa.jetty.jetty.servlet.ServletHolder.handle(ServletHolder.java:428)
    at org.openqa.jetty.jetty.servlet.ServletHandler.dispatch(ServletHandler.java:680)
    at org.openqa.jetty.jetty.servlet.ServletHandler.handle(ServletHandler.java:571)
    at org.openqa.jetty.http.HttpContext.handle(HttpContext.java:1526)
    at org.openqa.jetty.http.HttpContext.handle(HttpContext.java:1479)
    at org.openqa.jetty.http.HttpServer.service(HttpServer.java:920)
    at org.openqa.jetty.http.HttpConnection.service(HttpConnection.java:820)
    at org.openqa.jetty.http.HttpConnection.handleNext(HttpConnection.java:986)
    at org.openqa.jetty.http.HttpConnection.handle(HttpConnection.java:837)
    at org.openqa.jetty.http.SocketListener.handleConnection(SocketListener.java:243)
    at org.openqa.jetty.util.ThreadedServer.handle(ThreadedServer.java:358)
    at org.openqa.jetty.util.ThreadPool$PoolThread.run(ThreadPool.java:537)
Caused by: org.openqa.selenium.WebDriverException: java.lang.reflect.InvocationTargetException

&

Driver info: driver.version: PhantomJSDriver
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:590)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:241)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:127)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:140)
    at org.openqa.selenium.phantomjs.PhantomJSDriver.<init>(PhantomJSDriver.java:110)
    at org.openqa.selenium.phantomjs.PhantomJSDriver.<init>(PhantomJSDriver.java:99)
    ... 14 more
 Caused by: org.openqa.selenium.WebDriverException: Timed out waiting for driver server to start.

我怀疑是权限问题,但想知道以前是否有人遇到过这个问题。 至少,如果能弄清楚为什么这在 Mac 上有效,那就太好了。

最佳答案

此文件 - phantomjsdriver.log - 只能由具有文件写入权限的用户创建。 以“root”身份执行程序解决了这个问题。

关于linux - 带有 PhantomJS 的 WebDriverJS 可以在 OSX 上运行,但不能在 Linux 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25724317/

相关文章:

原始模式下的Python stdin 打印添加空格

r - 在另一种语言上使用 R 中经过训练的模型

java - 如何在 java 中使用 Selenium Webdriver 计算下载文件大小、状态、剩余时间和传输率

java - 防止子 JVM 在其父 JVM 退出时退出

linux - 如何在 Linux 上创建独立的加密文件?

ruby-on-rails - 无法连接到本地主机 :3000 after creating Rails project

java - 即使有 jar 文件也无法将 Java 连接到 MySQL 数据库

java - 如何使用 getAllSelectedOptions 从多个下拉列表中获取选定的选项

c - 为什么静态库函数的值是错误的?

node.js - 如何在node.js中异步使用setTimeout