Ajaxは少し混乱していて、Seleniumと連携しています。あなたの質問に対する簡単な答えはありませんが、いくつかのヒントがあります。
アクション/更新などを待つために、これらのループの多くを使用する必要があります。
for (int second = 0;; second++) {
if (second >= 60) log.error("Timeout (60 seconds) while submitting request");
try { if (selenium.isElementPresent("elementID")) break; } catch (Exception e) {}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
また、Ajax対応のページでは、たとえばTextBoxに入力された文字でトリガーされたイベントが何度も発生し、その後はイベントが発生しselenium.type("elementID", "12345");
ません。イベントを起動typeKeys("elementID", "12345");
します。
FireFoxとfirebugで、javascriptデバッガーを使用して、バックグラウンドで何が起こっているかを分析します。ChromesInspectデバッガーを使用することを好みます。開発者に相談して、特定の要素などで何がトリガーされたかを確認してください。
次に、Selenium2.0の最新バージョンを確認できます。WebドライバーはAjaxリクエストをはるかにうまく処理するはずですが、私はまだ作業する時間がありません。
つまり、自分で多くのコードを記述し、記録された部分を変更する必要があります。うまくいかない場合は、ある種のAjaxをより適切に処理する市販のコードもあります。