C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Seleniumでのwait使用について

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■98024 / inTopicNo.1)  Seleniumでのwait使用について
  
□投稿者/ RS (23回)-(2021/08/26(Thu) 14:56:52)

分類:[.NET 全般] 

現在、SeleniumにてIWebDriverを用い、Webブラウザの自動操作について調査しています。
言語はvb.netでフレームワークは4.5.2です。

waitを使用し、画面が完全に表示されるまで待機という処理を記述したいのですが
うまくいかず困っています。
具体的には以下のように書いたのですが、ExpectedConditions部分が宣されていないとエラーになっています。Imports句が足りていないのでしょうか?
Dim wait As New WebDriverWait(driver, New TimeSpan(0, 0, 10))
wait.IgnoreExceptionTypes(GetType(WebDriverTimeoutException))
wait.Until(ExpectedConditions.InvisibilityOfElementLocated(By.Id("foo")))

また、特定の要素が読み込まれているか、ではなくページ上のすべての要素がきちんと表示
されているかで判断したいのですが、可能なのでしょうか?

詳しい方いらっしゃいましたらよろしくお願いします。

引用返信 編集キー/
■98025 / inTopicNo.2)  Re[1]: Seleniumでのwait使用について
□投稿者/ Hongliang (1194回)-(2021/08/27(Fri) 13:55:14)
私の環境だと問題ないので直接の回答はできませんが。

ExpectedConditionsクラスはObsoleteになっています。
// このクラスはJavaで実装されていたから移植したが、
// なぜJavaで実装したかと言うと当時はラムダ式等で簡単な記述ができなかったからで、
// C#では誰でも簡単に書けるのでこのクラスの存在意義がないため廃止する、
// という趣旨の書き込みを見かけました。それが正しいかどうかは存じませんが。

代替品としてSeleniumExtrasの利用が提案されています。
お使いのWebDriverのメジャーバージョンによって
3系 → DotNetSeleniumExtras.WaitHelpers
4系 → SeleniumExtras.WaitHelpers
というパッケージをNuGetでインストールし、SeleniumExtras.WaitHelpers.ExpectedConditionsクラスを使用するようにされてみてはいかがでしょうか。

> また、特定の要素が読み込まれているか、ではなくページ上のすべての要素がきちんと表示
> されているかで判断したいのですが、可能なのでしょうか?
ドキュメントのロードが完了した、なら以下のようにIJavaScritpExecutorでdocument.readyStateを確認すればいいです。
https://stackoverflow.com/questions/15122864/selenium-wait-until-document-is-ready
JavaScriptで動的に生成したりしているページの場合、ページごとのアドホックな方法で何とかするしかないのではないでしょうか。
引用返信 編集キー/
■98026 / inTopicNo.3)  Re[2]: Seleniumでのwait使用について
□投稿者/ RS (25回)-(2021/08/27(Fri) 14:12:59)
No98025 (Hongliang さん) に返信
> 私の環境だと問題ないので直接の回答はできませんが。
>
> ExpectedConditionsクラスはObsoleteになっています。
> // このクラスはJavaで実装されていたから移植したが、
> // なぜJavaで実装したかと言うと当時はラムダ式等で簡単な記述ができなかったからで、
> // C#では誰でも簡単に書けるのでこのクラスの存在意義がないため廃止する、
> // という趣旨の書き込みを見かけました。それが正しいかどうかは存じませんが。
>
> 代替品としてSeleniumExtrasの利用が提案されています。
> お使いのWebDriverのメジャーバージョンによって
> 3系 → DotNetSeleniumExtras.WaitHelpers
> 4系 → SeleniumExtras.WaitHelpers
> というパッケージをNuGetでインストールし、SeleniumExtras.WaitHelpers.ExpectedConditionsクラスを使用するようにされてみてはいかがでしょうか。
>
>>また、特定の要素が読み込まれているか、ではなくページ上のすべての要素がきちんと表示
>>されているかで判断したいのですが、可能なのでしょうか?
> ドキュメントのロードが完了した、なら以下のようにIJavaScritpExecutorでdocument.readyStateを確認すればいいです。
> https://stackoverflow.com/questions/15122864/selenium-wait-until-document-is-ready
> JavaScriptで動的に生成したりしているページの場合、ページごとのアドホックな方法で何とかするしかないのではないでしょうか。


丁寧にご説明いただきありがとうございます。
大変参考になりました!

解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ