2

任意の要素を返しません。wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(By.ClassName(クラス名))私は<strong>IReadOnlyCollection < IWebElement <strong>は、要素がページにレンダリングされていたことを確認する</strong>をWebDriverWait使用して></strong>を見つける必要があり

これは、タイムアウトで失敗このコードは私のコード

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeout)); 
return wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(By.ClassName("TextInput"))); 

である。与えられたクラス名とページ上の任意の要素を見つけることができませんでした 意味。 私は私の元のコードは、単に要素が

var allInputs1 = container.FindElements(By.ClassName("textInput")); 

存在していることを確認するために、予想されるように、その行は要素を返し前にコードのこの行を追加しました。

だから私のconclustionは、ページ上の確か存在するためのものである要素を見つけることができなかったので、予想通り wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(By.ClassName("TextInput"))) が動作しないということです。

WebDriverWaitを使用して要素の配列を見つける最良の方法は何ですか?

+0

を試みるべきだと思います。より選択的なセレクターで試してみてください。 –

答えて

4

あなたの結論は間違っています。 FindElementsでは、要素が存在することを確認するだけです。

VisibilityOfAllElementsLocatedBy状態のAPIドキュメント:

ロケータと一致するウェブページ 上に存在するすべての要素が表示されていることを確認するために期待。視認性は、また、表示されなくされ 要素が0

より大きく明らか見えない高さと幅を有することを意味します。

私はあなたがタイムアウトがクラスに一致する要素のいくつかは、まだ隠されていることを意味ExpectedConditions.PresenceOfAllElementsLocatedBy

+0

あなたの答えをありがとう、私はページ上の要素を参照して、私はすでにPresenceOfAllElementsLocatedByを試してみました。 FindElementsは2つの結果を返し、PresenceOfAllElementsLocatedByは6つの結果を返します。そのうち4つは実際には表示されません。したがって、VisibilityOfAllElementsLocatedByのエラーです。スコープはどこで変更されますか? –

+1

@Polina F.いいえ、実際には 'findElements'は提供されたロケータで要素を待たず、' PresenceOfAllElementsLocatedBy'は指定されたロケータが要素を照合するまで待機し、VisibilityOfAllElementsLocatedBy存在感と可視性の両方のためにしてください。なぜなら、あなたが例外を取得している理由の6つの要素すべてのために、基本的にすべてのメソッドが完璧に動作しているだけです。ありがとう.. :) –

関連する問題

 関連する問題