geb.env和geb.driver之间的区别

时间:2012-11-12 21:02:23

标签: grails functional-testing spock geb

我试图找出geb.driver选项与geb.env之间的区别。

我找不到任何具体的文件。我可以理解geb.env类似于grails.env,除了geb env是在GebConfig.groovy中定义的。

然后,为什么我们需要geb.driver。更令人困惑的是我的功能测试用例如果指定geb.driver工作正常但在使用geb.env时出错。

Cannot find window: _PPIdentityWindow_ 
Build info: version: '2.25.0', revision: '17482', time: '2012-07-18 22:18:01' 
System info: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.7.5', java.version: '1.6.0_35' 
Driver info: driver.version: unknown 
org.openqa.selenium.NoSuchWindowException: Cannot find window: _PPIdentityWindow_ 
Build info: version: '2.25.0', revision: '17482', time: '2012-07-18 22:18:01' 
System info: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.7.5', java.version: '1.6.0_35' 
Driver info: driver.version: unknown 
        at org.openqa.selenium.htmlunit.HtmlUnitDriver$HtmlUnitTargetLocator.window(HtmlUnitDriver.java:943) 
        at geb.Browser.switchToWindow(Browser.groovy:458) 
        at geb.Browser.withWindow(Browser.groovy:470) 
        at geb.spock.GebSpec.methodMissing(GebSpec.groovy:51) 

任何帮助都非常有用。我也在grails用户邮件列表中提出了同样的问题。

http://grails.1312388.n4.nabble.com/Difference-between-geb-driver-and-geb-env-td4637641.html

1 个答案:

答案 0 :(得分:1)

说到文档时,geb.driver被描述为here,geb.env被描述为here

区别在于您可以使用geb.driver指定要使用的驱动程序,而使用geb.env可以指定要使用的环境,然后指定任何特定于环境的配置,即基本URL,等待,报告目录,如果你愿意,也可以是司机。

堆栈跟踪似乎与HtmlUnit驱动程序有关,而与Firefox驱动程序无关。我可以在你的邮件列表中看到你指定HtmlUnit驱动程序作为默认设置并且firefox驱动程序因为任何原因没有被选中,即使你使用geb.env = firefox并且你的GebConfig.groovy中有该环境的配置。我能想到的三个原因是:

  • 您没有在BuildConfig.groovy
  • 中指定对firefox驱动程序jar的依赖
  • 您忘记在GebConfig.groovy中导入FirefoxDriver类
  • 你在命令中的错误位置指定了geb.env属性 - 你必须在grails之后直接指定它(即grails -Denv.geb = firefox test functional :)否则它将不会被拾取

将来如果你有Geb特定问题,你应该考虑将它们发布到Geb mailing list而不是Grails邮件列表,你更有可能在那里得到答案。