2012-05-21 2 views
2

Я пытаюсь запустить функциональные тесты с использованием Grails 1.3.7, Geb, Spock и Selenium. Вот мой BuildConfig.groovy файл:Ошибка при использовании Geb, Selenium и Spock для функционального тестирования в Grails 1.3.7

  def seleniumVersion = "2.21.0" 

    grails.project.dependency.resolution = { 
    // inherit Grails' default dependencies 
    inherits("global") 
    log "warn" // log level of Ivy resolver, either 'error', 'warn', 'info', 'debug' or 'verbose' 
    test("org.seleniumhq.selenium:selenium-chrome-driver:$seleniumVersion") 
    test("org.seleniumhq.selenium:selenium-firefox-driver:$seleniumVersion") 
    test "org.codehaus.geb:geb-spock:0.6.0" 
} 

plugins { 
    test(":spock:0.5-groovy-1.7") 
} 

тест-код выглядит так:

LoginPage.groovy:

package pages 

import geb.Page 

class LoginPage extends Page 
{ 

static url = 'login' 

static at = { title.endsWith("Login")} 
} 

GeneralSpec.groovy:

import geb.spock.GebReportingSpec 
import spock.lang.* 
import pages.* 

@Stepwise 
class GeneralSpec extends GebReportingSpec 
{ 

    def "I can access the login page"() 
    { 
     when: "I open the login page" 
     to LoginPage 

     then: "I'll be at the login page" 
     at LoginPage 
    } 

} 

Теперь, когда пытаясь запустить этот тест с FirefoxDriver, я получаю эту ошибку:

org.apache.http.conn.scheme.Scheme.<init>(Ljava/lang/String;ILorg/apache/http/conn/scheme/SchemeSocketFactory;)V 
java.lang.NoSuchMethodError: org.apache.http.conn.scheme.Scheme.<init>(Ljava/lang/String;ILorg/apache/http/conn/scheme/SchemeSocketFactory;)V 
    at org.openqa.selenium.remote.internal.HttpClientFactory.getClientConnectionManager(HttpClientFactory.java:59) 
    at org.openqa.selenium.remote.internal.HttpClientFactory.<init>(HttpClientFactory.java:48) 
    at org.openqa.selenium.remote.HttpCommandExecutor.<init>(HttpCommandExecutor.java:111) 
    at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:78) 
    at org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:200) 
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:94) 
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:147) 
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:85) 
    at geb.driver.NameBasedDriverFactory.getDriver(NameBasedDriverFactory.groovy:42) 
    at geb.driver.CachingDriverFactory.getDriver(CachingDriverFactory.groovy:36) 
    at geb.Configuration.createDriver(Configuration.groovy:210) 
    at geb.Configuration.getDriver(Configuration.groovy:199) 
    at geb.Browser.getDriver(Browser.groovy:100) 
    at geb.Browser.go(Browser.groovy:300) 
    at geb.Page.to(Page.groovy:157) 
    at geb.Browser.to(Browser.groovy:333) 
    at geb.Browser.to(Browser.groovy:323) 
    at geb.Browser.to(Browser.groovy:313) 
    at geb.spock.GebSpec.methodMissing(GebSpec.groovy:51) 
    at GeneralSpec.I can access the login page(GeneralSpec.groovy:12) 
org.apache.http.conn.scheme.Scheme.<init>(Ljava/lang/String;ILorg/apache/http/conn/scheme/SchemeSocketFactory;)V 
java.lang.NoSuchMethodError: org.apache.http.conn.scheme.Scheme.<init>(Ljava/lang/String;ILorg/apache/http/conn/scheme/SchemeSocketFactory;)V 
    at org.openqa.selenium.remote.internal.HttpClientFactory.getClientConnectionManager(HttpClientFactory.java:59) 
    at org.openqa.selenium.remote.internal.HttpClientFactory.<init>(HttpClientFactory.java:48) 
    at org.openqa.selenium.remote.HttpCommandExecutor.<init>(HttpCommandExecutor.java:111) 
    at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:78) 
    at org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:200) 
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:94) 
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:147) 
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:85) 
    at geb.driver.NameBasedDriverFactory.getDriver(NameBasedDriverFactory.groovy:42) 
    at geb.driver.CachingDriverFactory.getDriver(CachingDriverFactory.groovy:36) 
    at geb.Configuration.createDriver(Configuration.groovy:210) 
    at geb.Configuration.getDriver(Configuration.groovy:199) 
    at geb.Browser.getDriver(Browser.groovy:100) 
    at geb.report.PageSourceReporter.getPageSource(PageSourceReporter.groovy:39) 
    at geb.report.PageSourceReporter.writePageSource(PageSourceReporter.groovy:35) 
    at geb.report.PageSourceReporter.writeReport(PageSourceReporter.groovy:27) 
    at geb.report.ScreenshotAndPageSourceReporter.writeReport(ScreenshotAndPageSourceReporter.groovy:31) 
    at geb.Browser.report(Browser.groovy:453) 
    at geb.spock.GebReportingSpec.report(GebReportingSpec.groovy:43) 
    at geb.spock.GebReportingSpec.cleanup(GebReportingSpec.groovy:39) 

Я пытался запустить этот простой тест в течение недели, однако все эти версии и исключения меня очень смущают. Я был бы очень признателен, если бы кто-нибудь мог помочь.

Благодаря

ответ

1

Это может быть вызвано неправильной версии HTTP-клиента, который будет включен. Для меня это было затянуто плагином выпуска Grails. Если это происходит из плагина, вы можете отключить его в BuildConfig:

plguins { 
    build ":release:$grailsVersion" { 
     excludes = 'http-client' 
    } 
} 
1

(редактировать) Это зависит от того, какая версия Firefox вы ориентируетесь. Я бегу против Firefox 3.6.28. Использование Grails 1.3.7 и Geb 0.6.1

(edit 2) Вы можете использовать версию селена - 2.21.0.

Быстрое решение заключается в следующем.

(редактировать 2) Защиту seleniumVersion = "2.21.0"

+0

Спасибо за ответ. Если вы посмотрите в моем первоначальном вопросе, я также использую seleniumVersion = 2.21.0. Я использую последний Firefox (13.0). –

Смежные вопросы