2013-10-23 50 views
3

我似乎无法从命令提示符运行功能测试。有趣的是,它与Intellij工作正常...windows 7命令提示符用geb和spock运行grails功能测试

我使用的是Grails 2.2.0,seleniumVersion =“2.27.0”,spockVersion =“spock-grails-support:0.7-groovy-2.0”,geb =“0.9。 0-RC-1" ,httpClientVersion = “4.2.3”

这是错误:

geb.driver.DriverCreationException: failed to create driver from callback '[email protected] 
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. 

ChromeDriver开始(在运行过程中看到的),但显然它不能启动铬。

这里是chromedriver如何在GebConfig.groovy创建:

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) 

注意,路径chromedriver和铬是通过系统属性给出的选项分别 这里是BuildConfig.groovy的依赖关系:

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" 

我已经尝试了很多版本的组合,并且我也没有从chromedriver获得任何日志,即使通过在ChromeOptions中传递日志路径。

更新:

我更新的Grails到2.2.3,GEB到0.9.2,现在在命令提示符下完整的堆栈跟踪如下(所有的IntelliJ还细):

| geb.driver.DriverCreationException: failed to create driver from callback '[email protected] 
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

尝试这种解决方案link 这是我使用ChromeDriver固定。下载您的版本上link,将它解压缩,并用它如下:

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

和更新GEB /斯波克version

+0

谢谢,我更新了geb/spock为0.9.2,并且我已经给了chromedriver的路径(请参阅我的GebConfig的第一行)。正如我所提到的,它启动但不能启动chrome。问题依然存在,只有在从命令行尝试时才会发生。 – Calahad

+0

所以,如果你在Intellij中运行...并且一切正常,可能你在Windows环境中有问题?你可以运行'grails --version'吗? 或java问题:'java -version'? – plsgogame

+0

Grails的版本:2.2.0,Java版本 “1.7.0_40” 的Java(TM)SE运行时环境(建立1.7.0_40-B43) 爪哇热点(TM)64位服务器VM(构建24.0-B56,混合模式) – Calahad

相关问题