top / index / prev / next / target / source

2016-12-18 diary: やたら Geb を勧められるので使ってみる

いがぴょんの日記 日記形式でつづる いがぴょんコラム ウェブページです。

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

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

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

そういえば Groovy って、、、

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

まずは Groovy のインストール

まず Geb は Groovy ベースなので、先に 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 を動作させる姿です。Selenium の Chrome 用 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 に関心を持った方のお役に立てば幸いです。

登場キーワード


この日記について