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