ホームページ >バックエンド開発 >C++ >ブレークポイントなしで実行すると WebDriverWait が待機に失敗するのはなぜですか?

ブレークポイントなしで実行すると WebDriverWait が待機に失敗するのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-30 20:33:09481ブラウズ

Why Is My WebDriverWait Failing to Wait When Running Without Breakpoints?

WebDriverWait が期待どおりに待機しない

要素からテキストを取得しようとすると、要素が表示される前に待機が実装されます。検索。ただし、コードがブレークポイントなしで実行されると待機がバイパスされ、例外が発生するように見えます。

問題の説明

提供されたコード スニペットは、次の FindElement メソッドを使用しています。 WebDriverWait クラス。指定されたタイムアウト期間 (この場合は 30 秒) 内に要素が見つからない場合に例外を発生させます。この即時性は、待機期間が終了するまでに要素が表示されない、または読み込まれないことが原因である可能性があります。

解決策

代わりに、次の ElementIsVisible 条件を使用できます。 ExpectedConditions クラスと WebDriverWait の組み合わせ。このアプローチでは、要素が条件を満たす (この場合は表示される) まで待機することになります。さらに、GetAttribute メソッドを利用して、Text プロパティの代わりに要素の innerHTML を取得できます。

ElementIsVisible 条件を使用した例を次に示します:

string messageText = new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementIsVisible(By.ClassName("block-ui-message"))).GetAttribute("innerHTML");

DotNetSeleniumExtras.WaitHelpers Option

雇用している場合NuGet を介して SeleniumExtras.WaitHelpers を使用すると、次のように ExpectedConditions クラスの ElementIsVisible 条件を利用できます。

string messageText = new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.ClassName("block-ui-message"))).GetAttribute("innerHTML");

以上がブレークポイントなしで実行すると WebDriverWait が待機に失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。