当前位置: 首页 > 知识库问答 >
问题:

Windows7命令提示符使用geb和spock运行grails功能测试

施赞
2023-03-14

我似乎无法从命令提示符运行功能测试。有趣的是,它与Intellij的工作很好...

 geb.driver.DriverCreationException: failed to create driver from callback 'script13825065657431376537371$_run_closure1@800
4899'
      [...] Caused by: org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid
 address of the remote server or browser start-up failure.
  System.setProperty('webdriver.chrome.driver', chromeDriver.absolutePath)
  ChromeDriverService service = new ChromeDriverService.Builder()
      .usingDriverExecutable(new File(chromeDriver.absolutePath))
      .usingAnyFreePort()
      .build()

  ChromeOptions options = new ChromeOptions()
  options.addArguments("user-data-dir=test/drivers/chrome/.config/google-grey-chrome-profile",
      "--disable-webgl",
      "log-path=C:/test/chromedriver.log")
  File chromeBinary = new File("C:/test/Google/Chrome/Application/chrome.exe")
  options.setBinary(chromeBinary)

  new ChromeDriver(service, options)
dependencies {
[...]
provided("org.apache.httpcomponents:httpclient:$httpClientVersion")

test "org.spockframework:$spockVersion"
// runtime 'mysql:mysql-connector-java:5.1.16'
test("org.gebish:geb-spock:$gebGrailsVersion")
test("org.gebish:geb-junit4:$gebGrailsVersion")
test "org.seleniumhq.selenium:selenium-chrome-driver:$seleniumVersion", { excludes "commons-io", "httpclient", 'nekohtml' }
test "org.seleniumhq.selenium:selenium-support:$seleniumVersion"
test "org.seleniumhq.selenium:selenium-remote-driver:$seleniumVersion"
compile "org.apache.httpcomponents:httpclient:$httpClientVersion"

更新:

我将grails更新到2.2.3,geb更新到0.9.2,现在命令提示符中的完整堆栈跟踪如下所示(在Intellij中仍然很好):

|  geb.driver.DriverCreationException: failed to create driver from callback 'script13856991845071649825131$_run_closure1@91a
94b3'
        at geb.driver.CallbackDriverFactory.getDriver(CallbackDriverFactory.groovy:35)
        at geb.driver.CachingDriverFactory.getDriver_closure3(CachingDriverFactory.groovy:80)
        at geb.driver.CachingDriverFactory$SimpleCache.get(CachingDriverFactory.groovy:30)
        at geb.driver.CachingDriverFactory.getDriver(CachingDriverFactory.groovy:79)
        at geb.Configuration.createDriver(Configuration.groovy:354)
        at geb.Configuration.getDriver(Configuration.groovy:343)
        at geb.Browser.getDriver(Browser.groovy:105)
        at geb.Browser.go(Browser.groovy:394)
        at geb.Browser.go(Browser.groovy:386)
        at support.FunctionalSpec.setupSpec_closure1(FunctionalSpec.groovy:13)
        at geb.Browser.drive(Browser.groovy:860)
        at geb.Browser.drive(Browser.groovy:830)
        at support.FunctionalSpec.setupSpec(FunctionalSpec.groovy:12)
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Map
        at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:218)
        at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:111)
        at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:115)
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:161)
        at script13856991845071649825131.run_closure1(script13856991845071649825131.groovy:44)
        at geb.driver.CallbackDriverFactory.getDriver(CallbackDriverFactory.groovy:29)

共有1个答案

王季萌
2023-03-14

尝试这个解决方案链接,这是我用ChromeDriver修复的。在链接上下载您的版本,解压缩并按以下方式使用:

System.setProperty("webdriver.chrome.driver", "<unzip location>/chromedriver");
driver = new ChromeDriver();

并更新Geb/Spock版本。

 类似资料:
  • 我尝试使用Grails 1.3.7、Geb、Spock和Selenium运行功能测试。下面是我的buildconfig.groovy文件: 测试代码如下所示:

  • 我正在尝试使用Spock运行geb测试。我已经在groovy脚本中编写了所有内容,该脚本位于中,如下所示

  • 在其他一些测试框架中,我习惯于标记测试,例如@really_slow,@front_end

  • 所以我的问题是,功能测试通过“测试-应用程序集成”和“测试-应用程序”运行到底有什么不同? 与我所想的唯一不同的是,“test-app”运行所有测试阶段(单元、集成、功能)。 奇怪的是,它确实以某种方式工作,但只有当我首先运行“test-app-integration”时:/ null Tobbe致意

  • 因此,目前我的每个测试规范类看起来类似于: 现在,我的问题是我似乎不能创建一个新的测试(在第一个测试之上)可以创建测试数据。如果没有有效的givit/when/then语句,测试似乎不会执行,从现有测试中调用方法也不会工作。我已经研究了grails-remote-control插件来帮助我,我相信这将使我能够成功地使闭包设置数据,但我不确定从GebReportSpecs(或某个抽象父级)中调用该插

  • 我在理解GEB/Spock测试中的一个问题时遇到了一些困难。我们正在使用gradle,并试图并行运行我们的测试。据我所知,gradle中的maxParallelForks属性将在单独的JVM中运行测试类。 我遇到的问题是,当我有6个测试类并将maxParallelForks设置为4个时,当测试开始时,我将得到4个测试类并行运行。太棒了!但最后两个班才是问题所在。假设在前4节课中,2节课在1分钟内完