0

Eclipse で Java を使用して Selenium RC を実行しています。私が抱えている問題は、selenium.click コマンドにあります。クリックしたリンクが新しいページをロードします。5 秒かかることもあれば、2 ~ 3 分かかることもあります。ページの読み込みを確認するたびに、テストが失敗した直後に「アクションが終了するのを待ってタイムアウトしました」というメッセージが表示されます。

代わりに selenium.isElementPresent を使用して、ページが読み込まれているかどうかを確認しようとしました。ただし、デバッグモードで実行すると、selenium.clickを通過して要素をチェックすることさえできないことに気付きます。私が理解していることから、selenium.click コマンドには待機が組み込まれています。私の質問は、組み込みの待機を無視する方法を誰かが知っているので、代わりに selenium.isElementPresent を使用できますか?

selenium.click(Link);
for (int i = 0; i < 60 ; i++) {
    if (selenium.isElementPresent(Home)) {
       break;
    }
    Thread.sleep(1000);
}

また、selenium.open を使用して URL に直接アクセスし、リンクを完全にスキップしてから、selenium.isElementPresent を使用してページが読み込まれたことを確認してみました。同じエラーメッセージで失敗する前に、実際には for ループに到達しないという同じ問題が発生します。

4

3 に答える 3

1

私は同じ問題を経験しました。クリック コマンドを try/catch でラップしてエラーをキャッチし、タイトルをアサートして、ページ上の予期されるテキストをチェックしました。

于 2012-05-07T22:08:32.380 に答える
0

解決策は、テストしているアプリケーションの性質によって異なります。クリック アクションが新しいページをロードする場合、次のように Selenium の waitForPageToLoad コマンドを使用できます。

selenium.click(Link);
selenium.waitForPageToLoad(60000);

注:パラメータは、ミリ秒単位のタイムアウト値です。したがって、これはページが読み込まれるまで最大 60 秒待機します。

そのクリック アンド ウェイト機能のおそらく最善の回避策は、Selenium の waitForCondition メソッドをそのまま使用することです。

selenium.waitForCondition("selenium.isElementPresent(\"Home\")", 60000);

Selenium は、true を返すか、2 番目のパラメーターとして指定されたタイムアウト値に達するまで、isElementPresent メソッドを継続的に実行します。さらに、selenium.waitForConditionを実行selenium.isTextPresentして、スクリプトを続行する前に画面にテキストが存在するかどうかを確認できます。

于 2012-05-08T02:36:12.063 に答える