ExecuteScriptで新たなウィンドウを複数開く【Selenium Basic × ExcelVBA】

Getメソッドの説明からExecuteScriptメソッドの説明まで

Getメソッドには引数がurl←指定したurlに接続以外にtimeoutとraiseがあり指定したサイトに接続すると時間が

timeoutの時間を超えるとraiseをTrueにしているとタイムアウトエラーを出させる仕組みがある

引数timeoutにタイムアウトになる時間をミリ秒単位で設定し(1,000とすると1秒)タイムアウトしたときにエラーを出したければ

raiseをTrueにしておく

そうすることでエラーが出る為、エラートラップを仕掛けておけば再度読み込み直しや、タイムアウトの時間を変数に指定したりして

読み込みができない場合の対処が可能

ExecuteScriptメソッドはウインドウでJavaScriptを実行できるので

driver.ExecuteScript Script:="window.open(""https://vba.company/samplepage"",""sample"")"

のようにして指定したサイトを新しくウインドウを開き、ウインドウの名前にsampleとつけて起動したり

.ExecuteScript Script:="window.alert(""こんにちは僕アラート"")"

アラートを引数で表示したい内容を指定して起動したり

driver.ExecuteScript Script:="window.scrollTo(0, document.body.scrollHeight);"

driver.ExecuteScript "window.scrollTo(0, 500);"

画面のスクロールをbodyのスクロールの高さ分スクロールしたり座標で指定したりする実践

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

実際に使用したサンプルコード

Option Explicit
Public Sub sample()

Dim driver As New Selenium.ChromeDriver

With driver

On Error GoTo myerror
.Get Url:="https://vba.company/samplepage", timeout:=1000, Raise:=True
On Error GoTo 0

.ExecuteScript Script:="window.open(""https://vba.company/samplepage"",""sample"")"
.SwitchToWindowByName Name:="sample"
.FindElementByLinkText("次へ").Click

End With

Exit Sub

myerror:

Resume

End Sub

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です