Selenium webdriver 无法在Maven下使用HtmlUnitDriver运行Geb测试
我正在运行示例Google规范,即: 类GoogleHomePageSpec扩展了GebReportingSpec{ def wikipedia搜索的第一个结果应该是wikipedia{ 鉴于: 谷歌主页 期望: 谷歌主页 什么时候: search.field.valuewikipedia 然后: waitFor{at GoogleResultsPage} 以及: firstResultLink.text.StartWikipedia 什么时候: firstResultLink.click 然后: 等待{at WikipediaPage} } } 使用以下GebSpec: 以及以下相关pom.xml摘录: 我已经检查过了,commons collection jar存在并且包含“missing”类。 使用ChromeDriver、FirefoxDriver和InternetExplorerDriver,我一点也没有发现这个错误 不幸的是,出于环境方面的原因,我不得不使用HtmlUnitDriver,所以我对这一点真的很挠头 如有任何建议,我将不胜感激 编辑1: 已经成功地在我的Mac上运行了此测试的一部分,其余部分超时。Selenium webdriver 无法在Maven下使用HtmlUnitDriver运行Geb测试,selenium-webdriver,spock,geb,htmlunit-driver,Selenium Webdriver,Spock,Geb,Htmlunit Driver,我正在运行示例Google规范,即: 类GoogleHomePageSpec扩展了GebReportingSpec{ def wikipedia搜索的第一个结果应该是wikipedia{ 鉴于: 谷歌主页 期望: 谷歌主页 什么时候: search.field.valuewikipedia 然后: waitFor{at GoogleResultsPage} 以及: firstResultLink.text.StartWikipedia 什么时候: firstResultLink.click 然后
但是我没有看到与上面在Windows上观察到的相同的错误。通过重建maven_repo解决了这个问题,即将旧的一个移到一边,以便maven在下一次运行测试时被迫重建它。
异常不再出现。您是否验证了您获得的是具有ListOrderedSet类的commons集合库的正确版本?是的,maven由于依赖项解析而引入的jar确实包含ListOrderedSet。这就是为什么我如此困惑。
reportsDir = "target/geb-reports"
/* webdriver.*.driver system properties are set in the POM */
driver = {
new HtmlUnitDriver();
}
<dependency>
<groupId>org.spockframework</groupId>
<artifactId>spock-core</artifactId>
<version>0.7-groovy-2.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.39.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.gebish</groupId>
<artifactId>geb-spock</artifactId>
<version>0.9.2</version>
<scope>test</scope>
</dependency>
First result for wikipedia search should be wikipedia(scratch.GoogleHomePageSpec) Time elapsed: 0.96 sec <<< ERROR!
geb.driver.DriverCreationException: failed to create driver from callback 'GebConfig$_run_closure1@20fcbdaf'
at geb.driver.CallbackDriverFactory.getDriver(CallbackDriverFactory.groovy:35)
at geb.driver.CachingDriverFactory.getDriver_closure3(CachingDriverFactory.groovy:80)
at geb.driver.CachingDriverFactory.getDriver_closure3(CachingDriverFactory.groovy)
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.clearCookies(Browser.groovy:483)
at geb.Browser.clearCookiesQuietly(Browser.groovy:491)
at geb.spock.GebSpec.resetBrowser(GebSpec.groovy:45)
at geb.spock.GebSpec.cleanup(GebSpec.groovy:67)
Caused by: java.lang.NoClassDefFoundError: org/apache/commons/collections/set/ListOrderedSet
at com.gargoylesoftware.htmlunit.CookieManager.<init>(CookieManager.java:59)
at com.gargoylesoftware.htmlunit.WebClient.<init>(WebClient.java:131)
at org.openqa.selenium.htmlunit.HtmlUnitDriver.newWebClient(HtmlUnitDriver.java:289)
at org.openqa.selenium.htmlunit.HtmlUnitDriver.createWebClient(HtmlUnitDriver.java:263)
at org.openqa.selenium.htmlunit.HtmlUnitDriver.<init>(HtmlUnitDriver.java:144)
at GebConfig.run_closure1(GebConfig.groovy:10)
at GebConfig.run_closure1(GebConfig.groovy)
at geb.driver.CallbackDriverFactory.getDriver(CallbackDriverFactory.groovy:29)
at geb.driver.CachingDriverFactory.getDriver_closure3(CachingDriverFactory.groovy:80)
at geb.driver.CachingDriverFactory.getDriver_closure3(CachingDriverFactory.groovy)
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.clearCookies(Browser.groovy:483)
at geb.Browser.clearCookiesQuietly(Browser.groovy:491)
at geb.spock.GebSpec.resetBrowser(GebSpec.groovy:45)
at geb.spock.GebSpec.cleanup(GebSpec.groovy:67)