PhantomJS selenium NoSuchElementException



我用Selenium(使用Selenium-server-standalone-2.47.1.jar)和phantomJs(在Ubuntu 14.04上phantomJs-v返回1.9.0)创建了一个网络爬虫。该代码在Windows 10上与FirefoxDriver和PhantomJSDriver都能很好地配合使用,但仅在Ubuntu 14.04.下与FirefoxDrive配合使用。

下面的示例代码:

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。。。〔信息-2015-08-13T14:15:57.720Z〕GhostDriver-主-运行在端口8677〔信息-2015-08-13T14:15:58.361Z〕会话〔d17a3cc0-41c5-11e5-bedb-6fa39763a2c0〕-CONSTRUCTOR-所需功能:{"phantomjs.binary.path":"/usr/lib/fintomjs/fontomjs"}〔信息-2015-08-13T14:15:58.370Z〕会话〔d17a3cc0-41c5-11e5-bedb-6fa39763a2c0〕-CONSTRUCTOR-协商功能:{"browserName":"phantomjs","version":"1.9.0","driverName":,"applicationCacheEnabled":false,"browserConnectionEnabled":true,"cssSelectorsEnabled":true,"webStorageEnabled":false,"rotableable":false、"acceptSslCerts":false、"nativeEvents":true、"proxy":{"proxyType":"direct"}}〔信息-2015-08-13T14:15:58.371Z〕SessionManagerReqHand-_postNewSessionCommand-新建会话创建时间:d17a3cc0-41c5-11e5-bedb-6fa39763a2c0线程"main"org.openqa.selenium.NoSuchElementException中出现异常:错误消息=>"找不到id为'main'的元素"由Request=>{"headers"引起:{"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":","urlParsed":{"anchor":","query":","file":"element","directory":"/","path":"/element","relative":"/enelement","port":","host":"1e5-床-6fa39763a2c0/元件"}命令持续时间或超时:281毫秒有关此错误的文档,请访问:http://seleniumhq.org/exceptions/no_such_element.html内部版本信息:版本:"2.47.1",修订:"411b314",时间:"2015-07-30 03:03:16"系统信息:主机:"Vmbox",ip:"127.0.0.1.1",os.name:"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,rotable=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、takeScreenshot=true}]在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)在sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessor Impl.java:57)在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessor Impl.java:45)位于java.lang.reflect.Constructure.newInstance(Constructor.java:526)网址:org.openqa.selene.remote.ErrorHandler.createThrowable(ErrorHandler.java:206)网址:org.openqa.selene.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158)网址:org.openqa.selene.remote.RemoteWebDriver.exexecute(RemoteWebDriver.java:595)网址:org.openqa.selene.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:348)网址:org.openqa.selene.remote.RemoteWebDriver.findElementById(RemoteWebDriver.java:389)网址:org.openqa.seselenium.By$ById.findElement(By.java:215)网址:org.openqa.selene.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:340)在LinkScanner.main(LinkScanner.java:27)原因:org.openqa.selenium.remote.Screenshot异常:已拍摄屏幕截图内部版本信息:版本:"2.47.1",修订:"411b314",时间:"2015-07-30 03:03:16"系统信息:主机:"Vmbox",ip:"127.0.0.1.1",os.name:"Linux",os.arch:"i386",os.version:"3.19.0-25-generic",java.version:"1.7.0_79"驱动程序信息:Driver.version:RemoteWebDriver网址:org.openqa.selene.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:138)…还有6个由以下原因引起:org.openqa.selenium.NoSuchElementException:错误消息=>"找不到id为"main"的元素"由Request=>{"headers"引起:{"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":","urlParsed":{"anchor":","query":","file":"element","directory":"/","path":"/element","relative":"/enelement","port":","host":"1e5-床-6fa39763a2c0/元件"}有关此错误的文档,请访问:http://seleniumhq.org/exceptions/no_such_element.html内部版本信息:版本:"2.47.1",修订:"411b314",时间:"2015-07-30 03:03:16"系统信息:主机:"Vmbox",ip:"127.0.0.1.1",os.name:"Linux",os.arch:"i386",os.version:"3.19.0-25-generic",java.version:"1.7.0_79"驱动程序信息:Driver.version:未知

将我的评论作为答案发布:)您需要从以下位置安装PhantomJS 1.9.8https://bitbucket.org/ariya/phantomjs/downloads

最新更新