はじめに
これはGeb Advent Calendar 2016の15日目の記事です。
前日はGebの名前の由来を中の人に聞いてみたでした。
今日は別タブが絡む場合の自動化の話です。
別タブを開くときの自動化
ありますよね。プライバシーポリシーが別タブで開くとか。そういうものを自動化するときの話です。
すでに開いているタブにスイッチするとき
withWindow()
というのが用意されていまして、こんな感じでかけます。
Browser.drive {
go()
$("a").click()
withWindow("myWindow") {
assert title == "Geb - Very Groovy Browser Automation"
}
}
新たに開くタブにスイッチするとき
こちらはそれ用に withNewWindow()
Browser.drive {
go()
withNewWindow({ $('a').click(), wait: true}) {
assert title == 'Geb - Very Groovy Browser Automation'
}
}
最初のクロージャーで、そのタブを開くアクションを指定します。
その後の引数でオプションを指定できます。
オプション
close
trueにすると別タブを開いた後の処理が終わった後にそのタブを閉じる
page
ここをセットすると、別タブを開く直前にページオブジェクトを引数で指定したものに切り替えてくれます。別タブで複雑な操作するときに便利!
wait
これはwithNewWindow()
だけで設定できます。ページを開く処理を待ってくれます。waitの値にはいろいろなものが指定できます。詳しくはこちら
注意点
このwithWindow()
, withNewWindow()
自体はvoidのメソッドなので、Spockのthenブロックの中で利用すると意図せずこけたりします。最初は気づきにくいので気をつけてください。
参考
まとめ
Gebだと別タブの自動化も楽。