PhantomjsDriver在Windows和Linux上都无法工作[英] PhantomjsDriver not working on both Windows and Linux

问题描述

我有一个使用 Selenium Webdriver 从站点获取一些信息的应用程序.它在 FirefoxDriver 和 ChromeDriver 上运行良好,但是当我尝试切换到 PhantomJSDriver 时,我遇到了一些困难.

  1. 在 Windows 机器上,它正常启动,然后立即开始一遍又一遍地吐出以下几行:
<块引用>

2014 年 1 月 5 日下午 7:28:43 org.apache.http.impl.client.DefaultRequestDirector tryExecuteINFO:处理请求时捕获的 I/O 异常 (org.apache.http.NoHttpResponseException):目标服务器未能响应

这可能会重复数百次,持续大约 10 分钟,直到最终加载页面;有时它甚至根本无法加载它.

  1. 在 Linux 机器上,它会尝试启动,然后返回以下内容:
<块引用>

线程"thread1"中的异常org.openqa.selenium.remote.UnreachableBrowserException:不能开始一个新的会话.可能的原因是远程地址无效服务器或浏览器启动失败.构建信息:版本:'未知',修订:'未知',时间:'未知'系统信息:主机:'穿山甲',ip:'128.238.32.20',os.name:'Linux',os.arch:'amd64',os.version:'2.6.32-39-generic', java.version: '1.7.0' 驱动信息:driver.version: PhantomJSDriver在 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:548)在 org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:216)在 org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:111)在 org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:115)在 org.openqa.selenium.phantomjs.PhantomJSDriver.(PhantomJSDriver.java:107)在 org.openqa.selenium.phantomjs.PhantomJSDriver.(PhantomJSDriver.java:96)引起:org.openqa.selenium.WebDriverException:等待驱动程序超时服务器启动.构建信息:版本:"未知",修订:"未知",时间:'未知'系统信息:主机:'pangolin',ip:'128.238.32.20',os.name:'Linux',os.arch:'amd64',os.version:'2.6.32-39-generic',java.version: '1.7.0' 驱动程序信息: driver.version: PhantomJSDriver在 org.openqa.selenium.remote.service.DriverService.start(DriverService.java:165)在 org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:62)在 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:527)... 7 更多原因:org.openqa.selenium.net.UrlChecker$TimeoutException:等待超时[http://localhost:16050/status] 在 20002 毫秒后可用在 org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:104)在 org.openqa.selenium.remote.service.DriverService.start(DriverService.java:163)... 9 更多原因:com.google.common.util.concurrent.UncheckedTimeoutException:java.util.concurrent.TimeoutException在 com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.java:143)在 org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:79)... 10 更多原因:java.util.concurrent.TimeoutException在 java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:258)在 java.util.concurrent.FutureTask.get(FutureTask.java:119)在 com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.java:130)... 11 更多

我做错了什么?我已经阅读了很多关于 Phantomjs 比其他驱动程序快得多的信息,并且非常想使用它,但是如果加载每个页面需要 10 分钟,那显然是不可行的.

我正在运行 Selenium WebDriver 2.38.0 版和 Phantomjs 1.9.2 版.

非常感谢您,bsg

编辑澄清一下,我认为这与我的代码无关.Linux 上的错误出现在我尝试启动 PhantomJS 驱动程序的行,如下所示.

   DesiredCapabilities caps = new DesiredCapabilities();
    caps.setJavascriptEnabled(true);                       
    caps.setCapability(
        PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY,
        phantombinary//"/home/p/phantomjs-1.9.2-linux-x86_64/bin/phantomjs"
    );

    // Launch driver (will take care and ownership of the phantomjs process)
     WebDriver driver = new PhantomJSDriver(caps);
    System.out.println("starting driver");

推荐答案

如果它在 Linux 上仍然不适合你,试试下面的代码,它在 Mac 上适合我.

capabilities.setCapability("phantomjs.binary.path", "path of phantom binary/phantomjs")

本文地址:https://www.itbaoku.cn/post/1740048.html