top / index / prev / next / target / source
日記形式でつづる いがぴょんコラム ウェブページです。
Selenium がらみでお知り合いになった @PoohSunny さんに やたら Geb を勧められました。Geb は Groovy 上で動く Web テスティングフレームワークなのだそうです。@PoohSunny さんの Geb のデモがやたらクールだったので、取り組んでみようと思いました。
※この日記エントリは Geb Advent Calendar 2016 に参加しています。
そういえば かねてより (数年も前から) 私の一部の知人群で「熱狂的な」Groovy ファンが 私に Groovy を勧めていたので、腹をくくって(?)、関心を持ったのもあります。
まず Geb は Groovy ベースなので、先に Groovy インストールする必要があります。そのため、まずは Groovy を入門する必要があります。ということで、先に Groovy をインストールする手順を とっても簡単にメモしておきます。
ふむ。Java さへ入っていれば、こんな手順だけで簡単にインストールが終わるのって、不思議ですね。
さて、それでようやっと Geb を試そう、ということなので、「Groovy に Geb をインストールするんだよな。どうやるんだろう?」って不思議に思ったのですが、これが不思議、「@Grab」という構文に FQN を突っ込むと、実行時に maven リポジトリから自動的にダウンロードして .groovy/grapes にセットのうえ利用可能になるという超絶便利機能が Groovy に天然で備わっています。びっくり仰天です。これは便利だのう。 だから、以下のようにソースファイルを作成のうえ groovy で実行すると初回に自動的に必要ライブラリ一式をダウンロードした上で実行されます。ちなみに初回のダウンロード時間には注意が必要そうです(苦笑)
@Grab('org.gebish:geb-core')
@Grab('org.seleniumhq.selenium:selenium-java')
@Grab('org.seleniumhq.selenium:selenium-chrome-driver')
import geb.Browser
import org.openqa.selenium.chrome.ChromeDriver
{->
def home = System.properties['user.home']
System.setProperty('webdriver.chrome.driver',
"${home}/apps/selenium/chromedriver"
)
}()
Browser.drive(driver:new ChromeDriver()) {
go 'https://www.google.co.jp'
}
ソース的には、Selenium WebDriver 経由で Google Chrome を動作させる姿です。Selenium の Chrome 用 WebDriver をダウンロード及び配置している必要があります。
$ groovy RunBrowser.groovy
Starting ChromeDriver 2.25.XXXXXX (XXXXXXXXXXXX) on port XXXXX
Only local connections are allowed.
12 18, 2016 10:30:53 午後 org.openqa.selenium.remote.ProtocolHandshake createSession
情報: Attempting bi-dialect session, assuming Postel's Law holds true on the remote end
12 18, 2016 10:30:56 午後 org.openqa.selenium.remote.ProtocolHandshake createSession
情報: Detected dialect: OSS
$
これを実行中に Google Chrome が開いて Google サイトが表示されました。確かに Groovy ソースコードの Geb 記述から Chrome をリモート操作できています。やったー。
ということで、Geb が動作してめでたし、めでたし。でした、、、。しかし、このエントリー、ほとんど Groovy 入門になってしまいました。Geb で Groovy に関心を持った方のお役に立てば幸いです。