Gebを試してみる
関西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 "javax/xml/namespace/NamespaceContext"
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
時間見つけて調べてみる。
ディスカッション
コメント一覧
見た感じ、クラスローダー関連の問題ではないでしょうか?
@GrabConfigで解決できませんかね。
http://groovy.codehaus.org/api/groovy/lang/GrabConfig.html