やたら Geb を勧められるので使ってみる

Selenium がらみでお知り合いになった @PoohSunny さんに やたら Geb を勧められました。GebGroovy 上で動く Web テスティングフレームワークなのだそうです。@PoohSunny さんの Geb のデモがやたらクールだったので、取り組んでみようと思いました。

※この日記エントリは Geb Advent Calendar 2016 に参加しています。

そういえば Groovy って、、、

そういえば かねてより (数年も前から) 私の一部の知人群で「熱狂的な」Groovy ファンが 私に Groovy を勧めていたので、腹をくくって(?)、関心を持ったのもあります。

まずは Groovy のインストール

まず GebGroovy ベースなので、先に Groovy インストールする必要があります。そのため、まずは Groovy を入門する必要があります。ということで、先に Groovy をインストールする手順を とっても簡単にメモしておきます。

ふむ。Java さへ入っていれば、こんな手順だけで簡単にインストールが終わるのって、不思議ですね。

ようやくここから Geb ハローワールド

さて、それでようやっと Geb を試そう、ということなので、「Groovy に Geb をインストールするんだよな。どうやるんだろう?」って不思議に思ったのですが、これが不思議、「@Grab」という構文に FQN を突っ込むと、実行時に maven リポジトリから自動的にダウンロードして .groovy/grapes にセットのうえ利用可能になるという超絶便利機能が Groovy に天然で備わっています。びっくり仰天です。これは便利だのう。
だから、以下のようにソースファイルを作成のうえ groovy で実行すると初回に自動的に必要ライブラリ一式をダウンロードした上で実行されます。ちなみに初回のダウンロード時間には注意が必要そうです(苦笑)

RunBrowser.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 を動作させる姿です。SeleniumChrome 用 WebDriver をダウンロード及び配置している必要があります。

コマンドライン (bash)
$ 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 Chrome が開いて Google サイトが表示されました。確かに Groovy ソースコードGeb 記述から Chrome をリモート操作できています。やったー。

まとめ

ということで、Geb が動作してめでたし、めでたし。でした、、、。しかし、このエントリー、ほとんど Groovy 入門になってしまいました。Geb で Groovy に関心を持った方のお役に立てば幸いです。