我已经使用Selenium(使用selenium-server-standalone-2.47.1.jar)和phantomJs(phantomjs -v在Ubuntu 14.04上返回1.9.0)创建了一个Web搜寻器。该代码与Windows 10上的FirefoxDriver和PhantomJSDriver都可以正常工作,但仅在Ubuntu 14.04下与FirefoxDriver一起工作。
下面的示例代码:
public static void main(String[] args) {
DesiredCapabilities DesireCaps = new DesiredCapabilities();
DesireCaps.setCapability("phantomjs.binary.path", "/usr/lib/phantomjs/phantomjs");
WebDriver driver=new PhantomJSDriver(DesireCaps);
String Url = "https://xxx";
driver.get(Url);
WebElement rootWebElement = driver.findElement(By.id("main"));
List<WebElement> parentElements = rootWebElement.findElements(By.tagName("li"));
//243 , 240 (previous)
for (int i = 106; i < parentElements.size(); i++) {
WebElement href =parentElements.get(i).findElement(By.tagName("z"));
if(href!=null){
Scanner scanner = new Scanner(href.getAttribute("href"));
try {
scanner.parseXML(href.getAttribute("href"));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
如果打开提供的URL的源...。您可以轻松地看到id =“ main”的标记存在...
堆栈跟踪:
PhantomJS正在启动GhostDriver ...
[INFO-2015-08-13T14:15:57.720Z] GhostDriver-主-运行在端口8677上
[INFO-2015-08-13T14:15:58.361Z]会话[d17a3cc0-41c5-11e5-bedb-6fa39763a2c0]-构造函数-所需功能:{“ phantomjs.binary.path”:“ / usr / lib / phantomjs / phantomjs “}
[INFO-2015-08-13T14:15:58.370Z]会话[d17a3cc0-41c5-11e5-bedb-6fa39763a2c0]-构造函数-协商的功能:{“ browserName”:“ phantomjs”,“ version”:“ 1.9.0” ,“ driverName”:“ ghostdriver”,“ driverVersion”:“ 1.0.3”,“ platform”:“ linux-unknown-32bit”,“ javascriptEnabled”:true,“ takesScreenshot”:true,“ handlesAlerts”:false,“ databaseEnabled“:false,” locationContextEnabled“:false,” applicationCacheEnabled“:false,” browserConnectionEnabled“:false,” cssSelectorsEnabled“:true,” webStorageEnabled“:false,” rotatable“:false,” acceptSslCerts“:false,” nativeEvents“ :true,“ proxy”:{“ proxyType”:“ direct”}}
[INFO-2015-08-13T14:15:58.371Z] SessionManagerReqHand-_postNewSessionCommand-创建的新会话:d17a3cc0-41c5-11e5-bedb-6fa39763a2c0
线程“主”中的异常org.openqa.selenium.NoSuchElementException:错误消息=>'无法找到ID为'main'的元素
由请求=> {“标头”:{“ Accept-Encoding”:“ gzip,deflate”,“ Connection”:“ Keep-Alive”,“ Content-Length”:“ 29”,“ Content-Type”:“引起application / json; charset = utf-8“,” Host“:” localhost:8677“,” User-Agent“:” Apache-HttpClient / 4.4.1(Java / 1.7.0_79)“},” httpVersion“:” 1.1“,” method“:” POST“,” post“:” {\“ using \”:\“ id \”,\“ value \”:\“ main \”}“,” url“:” / element “,” urlParsed“:{” anchor“:”“,” query“:”“,” file“:” element“,” directory“:” /“,” path“:” / element“,” relative“: “ / element”,“ port”:“”,“ host”:“”,“ password”:“”,“ user”:“”,“ userInfo”:“”,“ authority”:“”,“ protocol” :“”,“源”:“ / element”,“ queryKey”:{},“块”:[“ element”]},“ urlOriginal”:“ / session / d17a3cc0-41c5-11e5-bedb-6fa39763a2c0 / element “}
命令持续时间或超时:281毫秒
有关此错误的文档,请访问:http://seleniumhq.org/exceptions/no_such_element.html
内部版本信息:版本:“ 2.47.1”,修订版:“ 411b314”,时间:“ 2015-07-30 03:03:16”
系统信息:主机:'Vmbox',ip:'127.0.1.1',操作系统名称:'Linux',os.arch:'i386',os.version:'3.19.0-25-generic',java.version :'1.7.0_79'
***元素信息:{Using = id,value = main}
会话ID:d17a3cc0-41c5-11e5-bedb-6fa39763a2c0
驱动程序信息:org.openqa.selenium.phantomjs.PhantomJSDriver
功能[{platform = LINUX,acceptSslCerts = false,javascriptEnabled = true,browserName = phantomjs,rotatable = false,driverVersion = 1.0.3,locationContextEnabled = false,version = 1.9.0,cssSelectorsEnabled = true,databaseEnabled = false,handlesAlerts = false ,browserConnectionEnabled = false,proxy = {proxyType = direct},nativeEvents = true,webStorageEnabled = false,driverName = ghostdriver,applicationCacheEnabled = false,takesScreenshot = true}]]
在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)处
在sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
在java.lang.reflect.Constructor.newInstance(Constructor.java:526)
在org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206)
在org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158)
在org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:595)
在org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:348)
在org.openqa.selenium.remote.RemoteWebDriver.findElementById(RemoteWebDriver.java:389)
在org.openqa.selenium.By $ ById.findElement(By.java:215)
在org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:340)
在LinkScanner.main(LinkScanner.java:27)
引起原因:org.openqa.selenium.remote.ScreenshotException:截屏已拍摄
内部版本信息:版本:“ 2.47.1”,修订版:“ 411b314”,时间:“ 2015-07-30 03:03:16”
系统信息:主机:'Vmbox',ip:'127.0.1.1',操作系统名称:'Linux',os.arch:'i386',os.version:'3.19.0-25-generic',java.version :'1.7.0_79'
驱动程序信息:driver.version:RemoteWebDriver
在org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:138)
...另外6个
引起原因:org.openqa.selenium.NoSuchElementException:错误消息=>'无法找到ID为'main'的元素
由请求=> {“标头”:{“ Accept-Encoding”:“ gzip,deflate”,“ Connection”:“ Keep-Alive”,“ Content-Length”:“ 29”,“ Content-Type”:“引起application / json; charset = utf-8“,” Host“:” localhost:8677“,” User-Agent“:” Apache-HttpClient / 4.4.1(Java / 1.7.0_79)“},” httpVersion“:” 1.1“,” method“:” POST“,” post“:” {\“ using \”:\“ id \”,\“ value \”:\“ main \”}“,” url“:” / element “,” urlParsed“:{” anchor“:”“,” query“:”“,” file“:” element“,” directory“:” /“,” path“:” / element“,” relative“: “ / element”,“ port”:“”,“ host”:“”,“ password”:“”,“ user”:“”,“ userInfo”:“”,“ authority”:“”,“ protocol” :“”,“源”:“ / element”,“ queryKey”:{},“块”:[“ element”]},“ urlOriginal”:“ / session / d17a3cc0-41c5-11e5-bedb-6fa39763a2c0 / element “}
有关此错误的文档,请访问:http://seleniumhq.org/exceptions/no_such_element.html
内部版本信息:版本:“ 2.47.1”,修订版:“ 411b314”,时间:“ 2015-07-30 03:03:16”
系统信息:主机:'Vmbox',ip:'127.0.1.1',操作系统名称:'Linux',os.arch:'i386',os.version:'3.19.0-25-generic',java.version :'1.7.0_79'
驱动程序信息:driver.version:未知
最佳答案
发表我的评论作为答案:)
您需要从https://bitbucket.org/ariya/phantomjs/downloads安装PhantomJS 1.9.8