発表スライド
20141018 第2回selenium勉強会
発表者
- 玉川紘子さん
- 株式会社SHIFT
- コミュニティ
- STAR(テスト自動化研究会)
- 日本Jenkinsユーザ会
WebDriverの欠点『コードが長い』
独自実装のwrapperを作成
ライブラリで解決
http://www.fluentlenium.org/
Gebについて
http://www.gebish.org/
立ち位置
Gebのメリット
コードが短い
- Selenium WebDriverのように、いちいち「driver」と書かなくてOK
- jQueryライクな記法
- Form内要素はさらに簡単に記載できる
今までだと独自実装で対応していた部分が既にできている
- テキスト入力のシンプル化を実現
- 設定系はGebConfig.groovyに集約
- クラスパス直下に置くと自動的に読み込んでくれる
- 設定のキーワードがある程度決まっている
- PageObjectにもサポート
- 「extend Page」と継承する。
- "to hoge"と記載すれば、hogeに移動できる
groovyやspockの機能が使える
- ブロックを使って、テストのフェーズの表現が可能
- setup(準備)
- when(条件)
- then(結果)
- cleanup(後片付け)
- データ駆動テストがシンプルに書ける
- モジュールが使える
- 共通部分を別モジュールで記載
- サイトの共通メニュー、ECのカートなどで便利
つまづきそうなこと
Syntaxの省略に注意
- IDEの補完に頼るなら、省略なしで記載すべき
- If文が入っているテストケースだと、assertionが正しく反応してくれない可能性あり
- そもそもテストケース内でif文が入っていること自体が微妙ではあるが
PageObjectの使い方に注意
- テストケースでは、PageObject外でデータをそのまま書かない。
- PageObjectの呼び出しで変数指定をすべき
+αの工夫
TestSuiteの動的作成
- 置換対象のワード(%TESTCLASS%とか)を含めて、TestSuiteのテンプレートを作成する。
- Jenkinsのパラメータを用いて%TESTCLASS%を置換する
さいごに
Q&A
Groovyの参考となる情報は?
Syntaxを省略すると、コンパイルエラーになるのか、それとも実行時エラーになるのか
- できない。あくまでも記法が似ているだけ。
- XPathのサポートもない
JavaのWebDriverとの混在はできるのか?
- 経験が無いので分からない
- Assertの仕組みなどは完全に違う
- 既存コードとの組み合わせは難しいかもしれない
- Gebを用いて、できない部分をJavaのWebDriverで補完ならできるかもしれない