めも

2年生

私がGebで困ったときの解決法まとめ

ハロウィンですね。私は最近Gebやってます。自動でブラウザが操作されている様子はなかなかなかなか面白いです。
備忘録をかねてGeb書いてて困った時の解決法をまとめます。

テスト実行スピードが速すぎてアプリケーションが追い付かないよ。。

まだページの読みこみが終わってないのに要素を取得しようとしたりしてエラーが起きることが多々あります。
そんなときはwaitFor{}を使って待ってもらいます。

waitFor{$("要素").isDisplayed()} // 要素が読み込まれるまで処理を止める
waitFor{$("要素").click()} // 要素がクリックされるまで処理を止める

普段は失敗しなくてもたまにテストが先走って失敗することもあるので保険のつもりでつけたりしてます。

画面外の要素が取得できないなあ。。

Seleniumの仕組みをちゃんと理解していないのでよくわからないのですが画面外の要素をたまに取得できないときがあります。
正確にいうと要素自体は取れるけどvalueとかタグ間の文字列が取れない。。
そんなときは目的の要素を画面内におさめてやります。

JavascriptExecutor exe = (JavascriptExecutor) driver
exe.executeScript("element.scrollIntoView(true)")

JavaScriptのscrollIntoViewを使いました。
対象の要素を引数がtrueなら画面上部、falseなら画面下部に表示するようスクロールされます。
JavascriptExecutorのexecuteScript()でJavaScriptを実行することができます。
jQueryでもscrollTopとかscrollLeftとか同じようなメソッドがあるのですがGebだとうまく引数を渡せなくて断念してしまいました。

書くネタをメモしてくるのを忘れたのでひとまずこのふたつです。今後追記していこうと思います!

全く関係ない話になるのですが、ハロウィンなものをjQueryでつくってあそぼしようと思ってました。
残念ながらハロウィンに間に合いませんでしたが描いたおばけが力作なので載せます(/・ω・)/
f:id:ktlcs517:20161031221620g:plainf:id:ktlcs517:20161031221431g:plain