C#を使用したSelenium「要素はもはや有効ではありません」ステップを繰り返すと例外がスローされる

Visual
StudioでSelenium/C#を使用してテストケースを自動化すると、繰り返し迷惑な問題が発生しています。

このテストは、検索基準テキストの検証を中心に設計されています。私が各基準をテストするためには、次のことが必要です。

  1. アプリのホームページに移動する
  2. 検索アプリをクリックします
  3. 検索ページで、有効な条件を入力します
  4. 検索結果ページで、検索されたものとしてテキストに検索条件が表示されることを確認します。
  5. さまざまな検索条件で手順1〜3を繰り返します。
  6. 結果ページの検索条件がすべて表示されることを確認します。

手順5(ホームページに戻る)に進むと、次の例外が発生します。 “例外を投げた:
OpenQA.Selenium.StaleElementReferenceException:要素はもはや有効ではありません

私はこれを前に受けて、 “wait.Until(ExpectedConditions.ElementIsVisible”コマンド
– なぜこれがうまくいったのか分かりません)を追加して周りに乗りました。

しかし、私が呼び出す各要素のインスタンスを入力する必要があるため、上記のソリューションは非常に面倒になりつつあります。

どんな助けでも大歓迎です。

ベストアンサー

これは、ループ内の要素でアクションを実行しようとすると、潜在的なリスクです。要素を見つけるときに
break
ステートメントを置くことをお勧めします。これは、終了する前に一度失敗するループの性質です。

次のようなことができます:

public void select_customer_short_view(String _name) {
            for (WebElement we : get_list_cust_components_names_webelement()) {
                if (we.getText().equals(_name)){                                   //this will throw StaleElementReferenceException if break is not put
                    we.click();
                    break;
                }
            }
        }

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です