1

そこで、GebReportingSpec を拡張する最初の Geb スクリプトを作成しました。driver.quit() を実行する定義のクリーンアップを指定しました。ブラウザは閉じますが、ブラウザを閉じた後に実行されると思われるため、スクリーンショットユーティリティを実行できないため、エラーが発生します。それが問題かどうかを確認するために睡眠を入れてみましたが、何もしませんでした


JUnit 4 Runner, Tests: 1, Failures: 1, Time: 25944Test Failure: Validate that the default time zone for store is set to America/New_York(groovy.manager.ReferenceStoreDefaultTimeZoneTests)org.openqa.selenium.remote.SessionNotFoundException: The FirefoxDriver cannot be used after quit() was called.Build info: version: '2.31.0', revision: '1bd294d185a80fa4206dfeab80ba773c04ac33c0', time: '2013-02-27 13:51:26'System info: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.8.3', java.
version: '1.6.0_43'
Driver info: driver.version: RemoteWebDriver
        at org.openqa.selenium.firefox.FirefoxDriver$LazyCommandExecutor.execute
(FirefoxDriver.java:352)
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.ja
va:527)
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.ja
va:569)
        at org.openqa.selenium.remote.RemoteWebDriver.getPageSource(RemoteWebDri
ver.java:414)
        at geb.report.PageSourceReporter.getPageSource(PageSourceReporter.groovy
:39)
        at geb.report.PageSourceReporter.writePageSource(PageSourceReporter.groo
vy:35)
        at geb.report.PageSourceReporter.writeReport(PageSourceReporter.groovy:2
7)
        at geb.report.ScreenshotAndPageSourceReporter.writeReport(ScreenshotAndP
ageSourceReporter.groovy:31)
        at geb.Browser.report(Browser.groovy:731)
        at geb.spock.GebReportingSpec.report(GebReportingSpec.groovy:43)
        at geb.spock.GebReportingSpec.cleanup(GebReportingSpec.groovy:39)

考え?

編集:

ドライバーは、GebConfig ファイルを介して作成されています。

@Grab(group='org.seleniumhq.selenium', module='selenium-firefox-driver', 
    version='2.31.0')
@Grab(group='org.seleniumhq.selenium', module='selenium-chrome-driver', 
    version='2.31.0')
@Grab(group='org.seleniumhq.selenium', module='selenium-htmlunit-driver', 
    version='2.31.0')
@Grab("org.seleniumhq.selenium:selenium-support:2.28.0")

import org.openqa.selenium.firefox.FirefoxDriver
import org.openqa.selenium.chrome.ChromeDriver
import org.openqa.selenium.htmlunit.HtmlUnitDriver

reportsDir = "target/geb-reports"

// default is to use firefox
driver = {
    def driver = new FirefoxDriver()
    driver.manage().window().maximize()
    return driver
}

environments {
    'chrome' {
        def chromePath = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
        System.setProperty("webdriver.chrome.driver", chromePath)

        driver = {
            def driver = new ChromeDriver()
            return driver
        }
    }

    'firefox' {
        driver = {
            def driver = new FirefoxDriver()
            driver.manage().window().maximize()
            return driver
        }   
    }

    'htmlunit' {
        driver = {
            def driver = new HtmlUnitDriver()
            driver.javascriptEnabled = true
            return driver
        }   
    }
}

実行中のスクリプトはこちら

package groovy.manager

@Grab( 'org.spockframework:spock-core:0.7-groovy-2.0' )
@Grab(group='org.gebish', module='geb-core', version='0.9.0-RC-1')
@Grab(group='org.gebish', module='geb-spock', version='0.9.0-RC-1')
@Grab(group='org.seleniumhq.selenium', module='selenium-firefox-driver', 
    version='2.31.0')

import geb.spock.GebReportingSpec
import org.openqa.selenium.firefox.FirefoxDriver
import groovy.manager.pages.LoginPage
import groovy.manager.pages.org.OrganizationHomePage
import groovy.manager.pages.org.OrganizationProfilePage

class ReferenceStoreDefaultTimeZoneSpec extends GebReportingSpec {

    def "Validate that the default time zone is set to America/New_York"() {
        given: "You have the admin username and password"
            def username = "admin"
            def password = "test"

        when: "Navigate to Manager"
            to LoginPage

        and: "Log intoManager"
            usernameInput().value username
            passwordInput().value password
            submitBtn().click()

        then:
            assert at (OrganizationHomePage)

        and:
            assert ( {$("a[value='America/New York']")} )

        when: "Navigate to the organization profile"
            timeZoneLink().click()

        then:
            assert at (OrganizationProfilePage)

        and: "Verify America New York is selected"
            assert ( $("span", text: contains("America/New York")) )
    }
}
4

3 に答える 3

0

groovyコマンドラインでコマンドを使用して非常に単純なgebテスト仕様を実行すると、問題を再現できます。注釈の使用に関係がある@Grabのか​​ 、それともグルーヴィーなJUnitランナーの動作に関係があるのか​​ はわかりませんが、どこかが正しくなく、ブラウザが実際に閉じられていません.

同じクラスを取得し、Gradleビルドを使用して実行すると、実行が正常に終了し、ブラウザーが閉じられます。

Gradle をまだインストールしていない場合、最も簡単な方法はgvmを使用することです。

build.gradle次に、以下をファイルにドロップします。

apply plugin: 'groovy'                       

repositories {                               
    mavenCentral()                             
}                                            

dependencies {                               
   groovy 'org.codehaus.groovy:groovy-all:2.1.2'
   testCompile 'org.spockframework:spock-core:0.7-groovy-2.0'
   testCompile 'org.gebish:geb-spock:0.9.0-RC-1'
   testCompile 'org.seleniumhq.selenium:selenium-firefox-driver:2.31.0'
} 

最後に、自分GebConfig.groovyと自分の仕様クラスの両方を にコピーしsrc/test/groovyて実行しますgradle test。テストが実行され、その後ブラウザが閉じられます。

于 2013-03-29T01:08:54.537 に答える
0

ドライバーの設定はどうしていますか?ドライバーを明示的に作成している場合にのみ、ドライバーを終了する必要があります。それ以外の場合、ドライバーはそれ自体をシャットダウンします。

于 2013-03-27T13:27:32.333 に答える
0

これは私が使用するものです

dependencies {
def gebVersion = "0.9.3"
def seleniumVersion = "2.42.2"
// If using Spock, need to depend on geb-spock
testCompile "org.gebish:geb-spock:$gebVersion"
testCompile("org.spockframework:spock-core:0.7-groovy-2.0") {
    exclude group: "org.codehaus.groovy"
}
testCompile "org.codehaus.groovy:groovy-all:2.3.4"

testCompile "org.seleniumhq.selenium:selenium-chrome-driver:$seleniumVersion"
testRuntime "org.seleniumhq.selenium:selenium-support:$seleniumVersion"

}

于 2014-08-15T10:27:49.983 に答える