要素が存在するかどうかを確認する前に、ページが完全に読み込まれるまでSelenium WebDriverWait型を使用しようとしています。私はこの2つの異なったやり方を試みた。C#Selenium WebDriverWait.IgnoreExceptionTypesが機能しない
最初のメソッドはIgnoreExceptionTypesを使用し、Untilメソッド内でFindElementを呼び出します。これは、待機せずにただちにNoSuchElementExceptionをスローします。私はNoSuchElementExceptionを無視して、これがタイムアウトまで要素を見つけることを試みることを期待しました。このように動作するようには見えません。なぜMethod1は機能しませんか?
2番目のメソッドはExpectedConditions.ElementExistsを使用しており、正しく待機しているようです。
driver.Navigate().GoToUrl("http://www.google.com");
var myId = "myId";
//Method 1
var wait1 = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait1.IgnoreExceptionTypes(typeof(NoSuchElementException));
//Does not wait. Immediately throws NoSuchElementException
var result1 = wait1.Until(x => x.FindElement(By.Id(myId)));
//Method 2 - works as expected
var wait2= new WebDriverWait(driver,TimeSpan.FromSeconds(10))
.Until(ExpectedConditions.ElementExists(By.Id(myId)));
を使用していますか?ページオブジェクトモデルを使用していますか? – JeffC
私はそうは思わない。私の質問は、ドライバを作成する以外のすべてのコードを持っています – mje777