リッチなユーザインターフェースを備えたWebアプリケーションでは、Ajaxやアニメーションなどの非同期処理はよく用いられます。こういったWebアプリケーションをSeleniumでテストする際、従来の静的なユーザインターフェースを持つWebアプリケーションと同じようにテストを作成していると、実際にテストを動かした時に次のような問題が発生することがあります。 存在するはずの要素が見つからない(あるいはその逆) 画面全体、もしくは特定の要素の内容が更新されていない 例えば、以下のようなソースコードです。 ajaxButton.click(); WebElement fooElement = driver.findElement(By.id("foo")); 非同期処理を伴うボタンをクリックした後にfooというIDを持つ要素を探していますが、この要素が非同期処理の完了後に表示される要素であった場合