【问题标题】:Why isn't CodeceptJS executing the steps in my test? And why can I not see the test being executed?为什么 CodeceptJS 不执行我的测试中的步骤?为什么我看不到正在执行的测试?
【发布时间】:2017-06-19 07:07:34
【问题描述】:

我最近遇到了 CodeceptJS,我想尝试一下。我正在关注CodeceptJS's QuickStart page 上的教程,但现在我面临两个问题:

  1. 测试似乎只执行了第一步
  2. 我没有看到测试的执行

以下是我运行codeceptjs init时:

当我运行codeceptjs run --steps:

以下是我的测试(Test101_test.js):

Feature('Google search');

Scenario('test something', (I) => {
    I.amOnPage('/');
    I.fillField('q', 'Codeception');
    I.see('YAY');
});

来自 selenium 服务器的日志:

17:29:38.490 信息 - 执行中:[新会话:功能 [{可旋转=真,locationContextEnabled=真, loggingPrefs=org.openqa.selenium.logging.LoggingPreferences@35f1c325, browserName=firefox,javascriptEnabled=true,handlesAlerts=true, requestOrigins={name=webdriverio, 版本=4.6.2, url=http://webdriver.io}}]]) 17:29:38.496 INFO - 创建一个新的 功能会话 [{rotatable=true, locationContextEnabled=true, loggingPrefs=org.openqa.selenium.logging.LoggingPreferences@35f1c325, browserName=firefox,javascriptEnabled=true,handlesAlerts=true, requestOrigins={name=webdriverio, 版本=4.6.2, url=http://webdriver.io}}] 17:29:38.871 警告 - 抛出异常 java.util.concurrent.ExecutionException: org.openqa.selenium.WebDriverException: java.lang.reflect.InvocationTargetException 构建信息:版本: '3.0.1',修订:'1969d75',时间:'2016-10-18 09:48:19 -0700'系统 信息:主机:'My-Mac-mini.local',ip:'172.20.4.68',os.name:'Mac OS X',os.arch:'x86_64',os.version:'10.12.1',java.version:'1.8.0_91' 驱动程序信息:driver.version:未知 java.util.concurrent.FutureTask.report(FutureTask.java:122) 在 java.util.concurrent.FutureTask.get(FutureTask.java:192) 在 org.openqa.selenium.remote.server.DefaultSession.execute(DefaultSession.java:183) 在 org.openqa.selenium.remote.server.DefaultSession.(DefaultSession.java:119) 在 org.openqa.selenium.remote.server.DefaultSession.createSession(DefaultSession.java:95) 在 org.openqa.selenium.remote.server.DefaultDriverSessions.newSession(DefaultDriverSessions.java:131) 在 org.openqa.selenium.remote.server.handler.NewSession.handle(NewSession.java:59) 在 org.openqa.selenium.remote.server.handler.NewSession.handle(NewSession.java:36) 在 org.openqa.selenium.remote.server.rest.ResultConfig.handle(ResultConfig.java:111) 在 org.openqa.selenium.remote.server.JsonHttpCommandHandler.handleRequest(JsonHttpCommandHandler.java:189) 在 org.openqa.selenium.remote.server.DriverServlet.handleRequest(DriverServlet.java:222) 在 org.openqa.selenium.remote.server.DriverServlet.doPost(DriverServlet.java:184) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:707) 在 org.openqa.selenium.remote.server.DriverServlet.service(DriverServlet.java:150) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:790) 在 org.seleniumhq.jetty9.servlet.ServletHolder.handle(ServletHolder.java:808) 在 org.seleniumhq.jetty9.servlet.ServletHandler.doHandle(ServletHandler.java:587) 在 org.seleniumhq.jetty9.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) 在 org.seleniumhq.jetty9.servlet.ServletHandler.doScope(ServletHandler.java:515) 在 org.seleniumhq.jetty9.server.handler.ContextHandler.doScope(ContextHandler.java:1061) 在 org.seleniumhq.jetty9.server.handler.ScopedHandler.handle(ScopedHandler.java:141) 在 org.seleniumhq.jetty9.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) 在 org.seleniumhq.jetty9.server.Server.handle(Server.java:499) 在 org.seleniumhq.jetty9.server.HttpChannel.handle(HttpChannel.java:310) 在 org.seleniumhq.jetty9.server.HttpConnection.onFillable(HttpConnection.java:257) 在 org.seleniumhq.jetty9.io.AbstractConnection$2.run(AbstractConnection.java:540) 在 org.seleniumhq.jetty9.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) 在 org.seleniumhq.jetty9.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) 在 java.lang.Thread.run(Thread.java:745) 引起: org.openqa.selenium.WebDriverException: java.lang.reflect.InvocationTargetException 构建信息:版本: '3.0.1',修订:'1969d75',时间:'2016-10-18 09:48:19 -0700'系统 信息:主机:'My-Mac-mini.local',ip:'172.20.4.68',os.name:'Mac OS X',os.arch:'x86_64',os.version:'10.12.1',java.version:'1.8.0_91' 驱动程序信息:driver.version:未知 org.openqa.selenium.remote.server.FirefoxDriverProvider.callConstructor(FirefoxDriverProvider.java:96) 在 org.openqa.selenium.remote.server.FirefoxDriverProvider.newInstance(FirefoxDriverProvider.java:64) 在 org.openqa.selenium.remote.server.DefaultDriverFactory.newInstance(DefaultDriverFactory.java:60) 在 org.openqa.selenium.remote.server.DefaultSession$BrowserCreator.call(DefaultSession.java:222) 在 org.openqa.selenium.remote.server.DefaultSession$BrowserCreator.call(DefaultSession.java:209) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 org.openqa.selenium.remote.server.DefaultSession$1.run(DefaultSession.java:176) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ... 1 更多原因:java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) 在 org.openqa.selenium.remote.server.FirefoxDriverProvider.callConstructor(FirefoxDriverProvider.java:86) ... 9 更多原因:java.lang.IllegalStateException:路径 驱动程序可执行文件必须由 webdriver.gecko.driver 系统设置 财产;有关详细信息,请参阅 https://github.com/mozilla/geckodriver。最新版本可以 从https://github.com/mozilla/geckodriver/releases下载 com.google.common.base.Preconditions.checkState(Preconditions.java:199) 在 org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:109) 在 org.openqa.selenium.firefox.GeckoDriverService.access$000(GeckoDriverService.java:37) 在 org.openqa.selenium.firefox.GeckoDriverService$Builder.findDefaultExecutable(GeckoDriverService.java:95) 在 org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:296) 在 org.openqa.selenium.firefox.FirefoxDriver.createCommandExecutor(FirefoxDriver.java:277) 在 org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:247) 在 org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:242) 在 org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:135) ... 14 更多 17:29:38.875 警告 - 例外:驱动程序的路径 可执行文件必须由 webdriver.gecko.driver 系统属性设置; 有关详细信息,请参阅https://github.com/mozilla/geckodriver。这 最新版本可以从 https://github.com/mozilla/geckodriver/releases

有人可以帮我找出我可能做错了什么吗?

【问题讨论】:

  • 您是否启动了 Selenium 服务器和正确的驱动程序来控制 Firefox?
  • @skAstro 是的,我做到了。我忘了包含日志,但现在用它们更新了我的问题。

标签: javascript automated-tests codeceptjs


【解决方案1】:

我刚刚遇到完全相同的问题,我必须在命令提示符下输入“Selenium-standalone install”,然后输入“selenium-standalone start”。然后我打开另一个命令提示符并输入“codeceptjs run --steps”,这一次测试都运行正常,而不是像你发生的那样只运行第一个。我希望这会有所帮助,我发现这个问题非常令人沮丧!

【讨论】:

  • 谢谢!!!我正在使用 selenium 服务器独立 jar 来启动 selenium 服务器。看到您的评论后,我通过 NPM 获得了服务器,现在它可以工作了。不过我很好奇,如果我(假设地)只被限制在罐子里怎么办?那么有没有办法让它工作呢?
  • 很高兴我能帮上忙!使用 WebDriverIo 的测试运行器为我处理上下缠绕 Selenium,我被宠坏了,完全忘记了我必须手动启动它才能运行 codeceptjs。关于您的后续问题,我不确定。关于 jar 文件和与 java 相关的东西在一般情况下如何工作的细节,我还有很多需要了解。
  • 这可能有帮助吗? link
  • 我能理解。在我第一次尝试时,我也没有启动服务器,也不是很熟悉运行 jar 文件。再次感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-26
  • 2012-05-04
  • 2020-04-24
相关资源
最近更新 更多