LoginSignup
7
5

More than 5 years have passed since last update.

【俺用メモ】SeleniumIDEについて調べたこと

Posted at

俺用メモシリーズ第三弾。
いつものメモなので文体が入り混じってます。

セレクタ

セレクタが何個か使えるらしい。
よく使う2個だけメモ。

cssセレクタ

css=#hoge
このように先頭にcss=とつければOK。
css=.huga:first-childとかもできるので便利。
ループが使えるようになるプラグインを使えば.huga全部に対してテスト、とか細かくできそう。

XPath

//html/body/header/div/div[1]/a/img
みたいな感じで。デバッグツールでDOMツリーを右クリックするとだいたい「XPathでコピー」みたいなのがあるので、それを選択した上で先頭に/をつける。
先頭に/をやることでXPathですよ、という指定になるのかな?

コマンド関連

assertXxxとverifyXxxの違い

日本語ドキュメントに以下のような記述があります。

”assert” では、テストがエラーになり、現在のテストケースは中止されますが、”verify” では、テストはエラーになるものの、テストケースの実行は続行されます。
この機能を上手に活用するには、テストのコマンドを論理的にグループ化し、各グループを “assert” で始め、その後に 1 つまたは複数の “verify” コマンドを続けて記述します。

例えば「そのページが表示されていること」をassertで確認して、
「そのページ内にこの文言あるよね」とかをverifyとすれば、
ページが表示されていることが前提条件としてあって、
その上で文言チェックをするということになり擬似的にグループ化しましょう。
ということですね。

clickAndWaitではなくpause

リンクなりボタンなりをクリックした後、なにかhtmlの要素を追加することがあるかと思います。
次の20件を表示する、みたいなそういうボタン。

その挙動をテストしようとすると

  1. クリックする
  2. htmlが追加されるのを待つ
  3. htmlの要素数なりで追加されたことをテストする

という手順になるかと思います。
それの1,2をやってくれそうな名前をしているclickAndWaitコマンドですが
ページ遷移を想定しているコマンドであって想定している用途には使えません。
試しにクリックされてhtmlが追加されるのをテストしてみたのですが、Timeoutでエラーになります。

[info] Executing: |clickAndWait | css=#add-dom | |
[error] Timed out after 30000ms
[info] Test case failed

clickAtAndWaitというそれっぽい名前のコマンドもありますが、これはx,yを引数で渡すと、その座標の分、カーソルを動かしてくれる、的な?のもありますが、ちょっと使い方がよくわかりません。

なのでそれぞれ別々のコマンドで動かしていきます。

  1. click
  2. pause
  3. assertXxx

pause

ミリ秒の指定、 値じゃなくて対象に入れる。
スクリーンショット 2015-04-28 20.41.00.png
値の方に入れて書き換えて「効かない効かない」とか言ってたアホが私です。

waitForXxx

上記と関連して、

  1. click
  2. pause
  3. assertAlertPresent

とかやってみたんです。例えばボタンクリックしたらajaxでpostして、結果がOKなら「保存しました」みたいなアラートを出す感じのテストです。
が、アラートが出るタイミングでテストがコケるんですよね。
pauseを長く指定してみたりもしても解決できず。
で、解法は以下のとおり

  1. click
  2. waitForAlertPresent

アラートが出るまで待ってくれるんですね。痒いところに手が届きますわ。
なお、アラートの文章まで確認したい場合はwaitForAlert(string)の方を使うのが良さそう。(アラートの内容が「保存できませんでした」みたいなメッセージかもしれないしね)

それで言うと前述の例もpauseを使わずにwaitForXxxで代用できる可能性はあるなぁ、と思います。

コメント

コメントを挿入できます。
適宜、このコマンドが何のためのテストなのか?などを書いておくとレビューなども捗ります。
コメント書いててRPGツクールのイベントの管理方法を思い出した。
--以下、戦闘イベント--みたいな空のイベント作ってたわ。

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5