Selenium
Groovy
Geb
GebDay 15

Gebで別タブ遷移を自動化する

More than 1 year has passed since last update.


はじめに

これは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だと別タブの自動化も楽。