我有一个使用Selenium Webdriver的应用程序从站点获取一些信息。它适用于FirefoxDriver和ChromeDriver,但当我尝试切换到PhantomJSDriver时,遇到了一些困难。
2014年1月5日下午7:28:43 org.apache.http.impl.client.DefaultRequestDirector tryEx ecute INFO:处理请求时捕获的I / O异常(org.apache.http.NoHttpResponseException):目标服务器无法响应
这可能会重复几百次,持续大约10分钟,直到它最终加载页面为止;有时它根本无法加载它。
线程中的异常" thread1" org.openqa.selenium.remote.UnreachableBrowserException:不能 开始一个新的会议。可能的原因是遥控器的无效地址 服务器或浏览器启动失败。构建信息:版本:'未知', 修订:'未知',时间:'未知'系统信息:主持人:' 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.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 ms后可用 在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 at 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");
答案 0 :(得分:5)
如果在Linux上仍然无法使用,请尝试下面的代码,它适用于Mac。
capabilities.setCapability("phantomjs.binary.path", "path of phantom binary/phantomjs")
答案 1 :(得分:1)
org.openqa.selenium.remote.UnreachableBrowserException
显然与Phantom有关。在Windows上确保Phantom正在运行(设置环境变量并添加PATH)
检查远程计算机集线器地址是否正确,您应该能够运行phantomjs。
注意:Selenium Server必须在所需的远程计算机上运行。
DesiredCapabilities phantomBeast = DesiredCapabilities.phantomjs();
try {
webDriverInstance = new RemoteWebDriver(new URL(hubUrl), phantomBeast);
} catch (Exception e) {
//Do something
}