Gebを試してみる

2019-09-18Geb,Groovy

関西Javaエンジニアの会 で id:kiy0taka さんが話されていたGebを試してみた。その場で理解した限りでは、GroovyなSelenium的FW。

早速試してみる

http://geb.codehaus.org/latest/manual/intro.html#installation__usage にもあるとおり、インストールは不要。なぜならGroovyにはGrabがあるからね!だって。

以下のコードをスクリプト先頭に記述すればOKとのこと。

@Grapes([
@Grab(<span class="synConstant">"org.codehaus.geb:geb-core:latest.release"</span>),
@Grab(<span class="synConstant">"org.seleniumhq.selenium:selenium-firefox-driver:latest.release"</span>)
])
import geb.Browser

ということで以下のサンプルコードと組み合わせてスクリプトを作成し、実行。

サンプルコード(GebExample.groovy)

#!/usr/bin/env groovy
@Grapes([
        @Grab("org.codehaus.geb:geb-core:latest.release"),
        @Grab("org.seleniumhq.selenium:selenium-firefox-driver:latest.release")
])
import geb.Browser

Browser.drive("http://google.com/ncr") {
    assert title == "Google"

    // enter wikipedia into the search field
    $("input", name: "q").value("wikipedia")

    // wait for the change to results page to happen
    // (google updates the page without a new request)
    waitFor { title.endsWith("Google Search") }

    // is the first link to wikipedia?
    def firstLink = $("li.g", 0).find("a.l")
    assert firstLink.text() == "Wikipedia"

    // click the link
    firstLink.click()

    // wait for Google's javascript to redirect
    // us to Wikipedia
    waitFor { title == "Wikipedia" }
}

結果はエラー。いきなり落胆。

Caught: java.lang.LinkageError: loader constraint violation: loader (instance of <bootloader>) previously initiated loading for a different type with name &#34;javax/xml/namespace/NamespaceContext&#34;
at geb.driver.PropertyBasedDriverFactory.getDriver(PropertyBasedDriverFactory.groovy:63)
at geb.driver.CachingDriverFactory.getDriver(CachingDriverFactory.groovy:36)
at geb.Browser.getDefaultDriver(Browser.groovy:61)
at geb.Browser.<init>(Browser.groovy:48)
at geb.Browser.<init>(Browser.groovy)
at geb.Browser.<init>(Browser.groovy:44)
at geb.Browser.<init>(Browser.groovy)
at geb.Browser.drive(Browser.groovy:239)
at GebExamples.run(GebExamples.groovy:8)

ちなみに以下は僕のPC環境。

$ uname -a
Linux genzou-desktop 2.6.38-8-generic #42-Ubuntu SMP Mon Apr 11 03:31:50 UTC 2011 i686 i686 i386 GNU/Linux

$ groovy -version
Groovy Version: 1.8.0 JVM: 1.6.0_24

時間見つけて調べてみる。

2019-09-18Geb,Groovy