自動テストで明示的な待機を行う-javascript編

以前の記事で調査中だったjavascriptで要素の中身が変わるまで待つことが出来るようになりました。何も難しいことはなくseleniumのwebdriver.untilの名前空間を用いれば解決です。 使い方としては

driver.wait(until.elementTextIs(element,'期待されるテキスト'), 5000).then(function (text) {
            expect(text).to.be(true);
          });

のようにすれば良いです。elementは

var element = driver.findElement(By.xpath(exp));

のようにxpathやidからfindElementを使って下さい。.getText()は 上のelementTextIsでelementから実行されるので不要です。その中身のテキストと期待されるテキストを比較してbooleanで返します。これを用いれば例えばフォーム送信後に現れるメッセージ(要素としては最初から存在している)を確認することが出来て自動テストの自由度が上がります。注意点として上のコードを使うには

var until = require('selenium-webdriver').until;

としておかないといけません。 下のページを見ていると他にも使えそうなメソッドが多いので参考にして下さい。

http://selenium.googlecode.com/git/docs/api/javascript/namespace_webdriver_until.html