2014-11-20 203 views
0

我尝试按照Wiki页面中列出的步骤解决问题,并使用github.com/theintern/intern-examples/phantomjs-example与Selenium服务器运行phantomjs。虽然我仍然得到这个错误:尝试使用phantomjs和Selenium运行单元测试时出错

$ ./node_modules/.bin/intern-runner config=tests/intern 
Listening on 0.0.0.0:9000 
Starting tunnel... 
UnknownError: [POST http://localhost:4444/wd/hub/session/
{"desiredCapabilities":  
    {"browserName":"phantomjs","name":"tests/intern","idle-timeout":60} 
}] 
org.openqa.selenium.browserlaunchers.Proxies 
at Server._post <node_modules\intern\node_modules\leadfoot\Server.js:68:9> 
at Server.createSession <node_modules\intern\node_modules\leadfoot\Server.js:282:15> 
at Suite.setup <node_modules\intern\runner.js:208:22> 
at callOnSuite <node_modules\intern\lib\Suite.js:131:42> 
at call <node_modules\intern\lib\Suite.js:182:13> 
at Suite.run <node_modules\intern\lib\Suite.js:269:4> 
at <node_modules\intern\main.js:48:18> 
at <node_modules\intern\lib\util.js:324:19> 
at Array.forEach <native> 
at Object.run <node_modules\intern\main.js:47:16> 

TOTAL: tested 0 platforms, 0/0 tests failed; fatal error occurred 

其他人得到这个相同的问题,并知道如何解决?从维基

说明:

  1. 使用本地PhantomJS安装与实习生很简单:在你实习的配置,设置environments: [ { browserName: 'phantomjs' } ]tunnel: 'NullTunnel'
  2. 确保包含phantomjs可执行文件的目录是在你的PATH (如果安装的是npm install -g phantomjs,则通常会出现这种情况)
  3. 启动您当地的Selenium服务器(java -jar selenium-server-standalone-2.xx.x.jar)
  4. 运行intern-runner config=path/to/config

任我确切的文件我使用:https://github.com/theintern/intern-examples/tree/master/phantomjs-example

硒服务器错误日志

$ java -jar selenium-server-standalone-2.44.0.jar 
13:05:37.261 INFO - Launching a standalone server 
13:05:38.251 INFO - Java: Oracle Corporation 25.25-b02 
13:05:38.251 INFO - OS: Windows 7 6.1 amd64 
13:05:38.265 INFO - v2.44.0, with Core v2.44.0. Built from revision 76d78cf 
13:05:38.402 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub 
13:05:38.403 INFO - Version Jetty/5.1.x 
13:05:38.405 INFO - Started HttpContext[/selenium-server,/selenium-server] 
13:05:39.348 INFO - Started [email protected] 
13:05:39.349 INFO - Started HttpContext[/wd,/wd] 
13:05:39.349 INFO - Started HttpContext[/selenium-server/driver,/selenium-server/driver] 
13:05:39.350 INFO - Started HttpContext[/,/] 
13:05:39.355 INFO - Started SocketListener on 0.0.0.0:4444 
13:05:39.356 INFO - Started [email protected] 
13:05:59.689 INFO - Executing: [new session: Capabilities [{name=tests/intern, browserName=phantomjs, idle-timeout=60}]]) 
13:05:59.707 INFO - Creating a new session for Capabilities [{name=tests/intern, browserName=phantomjs, idle-timeout=60}] 
13:05:59.720 WARN - Exception thrown 
java.util.concurrent.ExecutionException: org.openqa.selenium.WebDriverException: java.lang.reflect.InvocationTargetException 
Build info: version: '2.44.0', revision: '76d78cf', time: '2014-10-23 20:02:37' 
System info: host: 'VM-C02JQ1VTDKQ4', ip: '127.0.0.1', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_25' 
Driver info: driver.version: unknown 
     at java.util.concurrent.FutureTask.report(Unknown Source) 
     at java.util.concurrent.FutureTask.get(Unknown Source) 
     at org.openqa.selenium.remote.server.DefaultSession.execute(DefaultSession.java:175) 
     at org.openqa.selenium.remote.server.DefaultSession.<init>(DefaultSession.java:111) 
     at org.openqa.selenium.remote.server.DefaultSession.createSession(DefaultSession.java:88) 
     at org.openqa.selenium.remote.server.DefaultDriverSessions.newSession(DefaultDriverSessions.java:108) 
     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:172) 
     at org.openqa.selenium.remote.server.DriverServlet.handleRequest(DriverServlet.java:201) 
     at org.openqa.selenium.remote.server.DriverServlet.doPost(DriverServlet.java:163) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
     at org.openqa.selenium.remote.server.DriverServlet.service(DriverServlet.java:129) 
     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 
Build info: version: '2.44.0', revision: '76d78cf', time: '2014-10-23 20:02:37' 
System info: host: 'VM-C02JQ1VTDKQ4', ip: '127.0.0.1', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_25' 
Driver info: driver.version: unknown 
     at org.openqa.selenium.remote.server.DefaultDriverProvider.callConstructor(DefaultDriverProvider.java:69) 
     at org.openqa.selenium.remote.server.DefaultDriverProvider.newInstance(DefaultDriverProvider.java:53) 
     at org.openqa.selenium.remote.server.DefaultDriverFactory.newInstance(DefaultDriverFactory.java:54) 
     at org.openqa.selenium.remote.server.DefaultSession$BrowserCreator.call(DefaultSession.java:214) 
     at org.openqa.selenium.remote.server.DefaultSession$BrowserCreator.call(DefaultSession.java:1) 
     at java.util.concurrent.FutureTask.run(Unknown Source) 
     at org.openqa.selenium.remote.server.DefaultSession$1.run(DefaultSession.java:168) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
     at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.reflect.InvocationTargetException 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
     at java.lang.reflect.Constructor.newInstance(Unknown Source) 
     at org.openqa.selenium.remote.server.DefaultDriverProvider.callConstructor(DefaultDriverProvider.java:59) 
     ... 9 more 
Caused by: java.lang.NoClassDefFoundError: org/openqa/selenium/browserlaunchers/Proxies 
     at org.openqa.selenium.phantomjs.PhantomJSDriverService.createDefaultService(PhantomJSDriverService.java:178) 
     at org.openqa.selenium.phantomjs.PhantomJSDriver.<init>(PhantomJSDriver.java:99) 
     ... 14 more 
Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.browserlaunchers.Proxies 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     ... 16 more 
13:05:59.936 WARN - Exception: org.openqa.selenium.browserlaunchers.Proxies 
+0

什么从Selenium服务器日志说运作良好?这是一个Selenium错误,因此您需要的信息在这些日志中,而不是来自Intern的输出。 – 2014-11-20 19:07:31

+0

@CSnover,我更新了日志输出的帖子 – d48 2014-11-20 21:09:58

+0

感谢@Renan编辑@Renan – d48 2014-11-20 21:31:53

回答

4

PhantomJS是broken with Selenium 2.44.0 now too

最佳解决方案:停止使用PhantomJS!
替代解决方案:只要需要PhantomJS修补程序,就会被卡住使用Selenium 2.43或更早版本。

+0

感谢您对@CSnover的感谢,我非常感谢。如果某些方法引用了dom,并且不像[email protected]能够运行那样依赖于Selenium,那么能够通过无头网络浏览器运行单元测试是很好的。将观看PhantomJS和Selenium的更新。 我会将此标记为接受的答案 – d48 2014-11-22 00:46:00

+0

@ c-snover您使用什么来代替PhantomJS? (诚​​实的问题。) – richardkmiller 2015-02-16 22:29:01

1

PhantomJS硒2.45

<dependency> 
    <groupId>org.seleniumhq.selenium</groupId> 
    <artifactId>selenium-java</artifactId> 
    <version>2.45.0</version> 
</dependency> 
+0

真棒,感谢您的信息。我最终在我的解决方案中使用了特定的旧版本,但很高兴知道有更新可行 – d48 2015-03-03 17:50:57

相关问题