В командной строке Windows 7 запустите функциональное тестирование Grails с помощью geb и spock
Я не могу запустить функциональные тесты из командной строки. Интересно, что он прекрасно работает с Intellij...
Я использую 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 '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.
ChromeDriver запущен (видно в запущенных процессах), но, очевидно, он не может запустить Chrome.
Вот как создается 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 и chrome задается через системное свойство и параметры соответственно. А вот зависимости в 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 '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 ответ
Попробуйте эту ссылку решения Это я исправил с помощью ChromeDriver. Загрузите вашу версию по ссылке, разархивируйте ее и используйте следующим образом:
System.setProperty("webdriver.chrome.driver", "<unzip location>/chromedriver");
driver = new ChromeDriver();
И обновите версию geb/spock.