自動テストで明示的な待機を行う。

自動テストをしていると要素の中身が変わるまで処理を待ちたい、とか要素が現れるまで処理を待ちたいとか明示的に待機させておきたいことがあります。Seleniumを使っていてしかもJavaなら 以下のように明示的な待機が可能です。

By buttonRegister = By.id("register");
By textMessage = By.id("message");

driver.findElement(buttonRegister).click();
// 要素のテキストが変更されるまで待つ
wait.until(ExpectedConditions.textToBePresentInElement(
            textMessage, "登録しました"));
assertThat(driver.findElement(textMessage).getText(), is("登録しました"));

これで要素のテキストが変更されるまで待つ事ができます。 WordpressでContact Formなどのプラグインをつかっているとフォームに入力した内容が正しく送られているかを確認したくても ただ要素のテキスト比較ではうまくいかないことがあります。そんな時に上のようなコードをつかえるといいです。javascriptでも同じ機能があるか現在調査中です。