尝试使用phantomjs和Selenium运行单元测试时出错
我尝试按照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
其他人得到这个相同的问题,并知道如何解决?从维基
说明:
- 使用本地PhantomJS安装与实习生很简单:在你实习的配置,设置
environments: [ { browserName: 'phantomjs' } ]
和tunnel: 'NullTunnel'
- 确保包含phantomjs可执行文件的目录是在你的PATH (如果安装的是
npm install -g phantomjs
,则通常会出现这种情况) - 启动您当地的Selenium服务器
(java -jar selenium-server-standalone-2.xx.x.jar)
- 运行
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
PhantomJS是broken with Selenium 2.44.0 now too。
最佳解决方案:停止使用PhantomJS!
替代解决方案:只要需要PhantomJS修补程序,就会被卡住使用Selenium 2.43或更早版本。
感谢您对@CSnover的感谢,我非常感谢。如果某些方法引用了dom,并且不像[email protected]能够运行那样依赖于Selenium,那么能够通过无头网络浏览器运行单元测试是很好的。将观看PhantomJS和Selenium的更新。 我会将此标记为接受的答案 – d48 2014-11-22 00:46:00
@ c-snover您使用什么来代替PhantomJS? (诚实的问题。) – richardkmiller 2015-02-16 22:29:01
PhantomJS硒2.45
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.45.0</version>
</dependency>
真棒,感谢您的信息。我最终在我的解决方案中使用了特定的旧版本,但很高兴知道有更新可行 – d48 2015-03-03 17:50:57
什么从Selenium服务器日志说运作良好?这是一个Selenium错误,因此您需要的信息在这些日志中,而不是来自Intern的输出。 – 2014-11-20 19:07:31
@CSnover,我更新了日志输出的帖子 – d48 2014-11-20 21:09:58
感谢@Renan编辑@Renan – d48 2014-11-20 21:31:53