こんにちは、blueです。
前回はSeleniumVBAのアラート処理について説明しました。
前回の記事はこちら
今回はSeleniumVBAにおける待機処理について説明します。
この記事を読めばコードに対して適切な待機処理を入れる方法を知ることができるようになりますので是非読んでいってください。
なお、2022年9月以降インストール方法の変更により変数の宣言方法が変わっています。
詳しい記事はこちらをご確認ください。
VBAを使ったものではありませんが、Seleniumを勉強する為の基本的な書籍です。各言語における基本的なメソッド一覧も記載されていますのでコードを書く際の参考になります。
SeeleniumVBAでの待機コマンド
SeleniumVBAには待機を実装する為にいくつかのコマンドが用意されています。
- 暗黙的待機
- 明示的待機
- その他
以下それぞれについて説明します。
暗黙的待機
要素が存在しない場合にWedriverが待機する時間を指定するメソッドとしてSetImplicitlyWaitメソッドが存在します。
この暗黙的待機は実行したコードのすべての要素に適用されます。
コードは以下の通りです。
Dim driver As New WebDriver
'暗黙的待機を3000ミリ秒入れる
driver.SetImplicitlyWait 3000
'暗黙的待機の設定時間を取得する
Debug.Print driver.GetImplicitlyWait
SetImplicitlyWaitメソッドの第一引数には待機する時間をミリ秒で指定します。
指定時間内に要素が見つからなかった場合はエラーが発生しますが、見つかった場合は、すぐに次の処理に移るようになります。
またGetImplicitlyWaitメソッドを使えば暗黙的待機の設定時間を取得することができます。
明示的待機
ユーザーが指定した特定の要素にのみ適用されるもので、WaitUntilReadyメソッドが存在します。
コードは以下の通りです。
Dim driver As New WebDriver
Dim elm As WebElement
Set elm = driver.FindElementByCssSelector("○○○")
'指定の要素が現れるまで最大1000ミリ秒待ってからクリックする
driver.WaitUntilReady(elm, 1000).click
WaitUntilReadyメソッドの第一引数には確認したい要素、第二引数には待機時間をミリ秒で指定します。
その他
Waitメソッド
指定時間待機させるメソッドとして、Waitメソッドが存在します。
コードは以下の通りです。
Dim driver As New WebDriver
'1000ミリ秒待ってから次のコードに進む
driver.Wait 1000
Waitメソッドの第一引数には待機時間をミリ秒で指定します。
SetPageLoadTimeoutメソッド
ページが完全に読み込まれるまで待機する時間を設定するものにSetPageLoadTimeoutメソッドが存在します。
以下のコードはSetPageLoadTimeoutで時間を設定し、GetPageLoadTimeoutメソッドで設定時間を確認しています。
Dim driver As New WebDriver
'PageLoadの待機時間を設定する
driver.SetPageLoadTimeout 1000
'PageLoad待機時間を取得する
Debug.Print driver.GetPageLoadTimeout
SetPageLoadTimeoutメソッドの第一引数には待機する時間をミリ秒で指定します。
指定時間内にページが見つからなかった場合はエラーが発生しますが、見つかった場合は、すぐに次の処理に移るようになります。
またGetPageLoadTimeoutメソッドを使えばPageLoadの待機時間を取得することができます。
SetScriptTimeoutメソッド
非同期スクリプトの実行が完了するまでの待機時間を設定するものにSetScriptTimeoutメソッドが存在します。
以下のコードはSetScriptTimeoutで時間を設定し、GetScriptTimeoutメソッドで設定時間を確認しています。
Dim driver As New WebDriver
'JavaScriptの待機時間を設定する
driver.SetScriptTimeout 2000
’JavaScriptの待機時間を取得する
Debug.Print driver.GetScriptTimeout
SetScriptTimeoutメソッドの第一引数には待機する時間をミリ秒で指定します。
指定時間内にスクリプトの実行が完了しなければエラーが発生しますが、見つかった場合は、すぐに次の処理に移るようになります。
またGetScriptTimeoutメソッドを使えばJavaScriptの待機時間を取得することができます。
今回のまとめ
今回はWebDriverの待機処理に関するメソッドを紹介しました。
スクレイピングをする際には待機処理が重要です。ぜひサンプルコードを使ってみてください。
VBAを使ったものではありませんが、Seleniumを勉強する為の基本的な書籍です。各言語における基本的なメソッド一覧も記載されていますのでコードを書く際の参考になります。
SeleniumVBAに関する記事はこちら
【SeleniumVBA】初心者向けに導入方法についてわかりやすく説明します(Excel VBA)
【SeleniumVBA】スクレイピングで使うメソッドについて説明します。
【SeleniumVBA】Yahooメールへのログイン方法をわかりやすく説明する(Excel VBA)
【SeleniumVBA】スクレイピングで使うメソッドについて説明します2(Excel VBA)
【SeleniumVBA】スクレイピングをする為のメソッド一覧表
【SeleniumVBA】ブラウザを操作するメソッドについてサンプルコードを紹介します
【SeleniumVBA】2022年9月の更新に伴うコードの変更点について説明します。
【SeleniumVBA】アラート処理に関するメソッドについてコードを紹介します
【SeleniumVBA】待機処理に関するメソッドについてコードを紹介します
コメント