2013-10-23 1 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 "

이 오류입니다 :

ChromeDriver가 시작
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 크롬하는 것을

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) 

참고가 시스템 속성을 통해 제공되며, 옵션은 각각 그리고 여기 BuildConfig.groovy의 의존성은 다음과 같습니다 : 여기

는 chromedriver이 GebConfig.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" 

많은 버전 조합을 헛되이 시도했는데 ChromeOptions에서 로그 경로를 전달해도 chromedriver에서 로그를 얻지 못했습니다.

업데이트 :

나는 0.9.2에 2.2.3, GEB에 Grails의 업데이트, 이제 명령 프롬프트에서 전체 스택 추적은 (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의 첫 번째 줄 참조). 내가 언급했듯이, 시작되지만 크롬을 시작할 수는 없다. 이 문제는 명령 줄에서 시도 할 때만 발생합니다. – 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) Java HotSpot (TM) 64 비트 서버 VM (빌드 24.0-b56, 혼합 모드) – Calahad

관련 문제