SeleniumBasicでフレームがあるホームページをハンドルする構文を紹介します。
- 利用目的は業務効率化です。(テスト自動化ではありません)
- ブラウザはGoogleChromeが対象です。(EdgeやFirefoxは対象外)
- 原文のVBAでは現在エラー発生する場合が多いため、修正を加えてます。
Examples.xlsmの保存場所(ここをクリック)
Examples.xlsmが保存されている場所は、SeleniumBasicがインストールされているサブフォルダ内になります。SeleniumBasicのインストール完了時に保存フォルダを確認することができます。ただ、大体以下フォルダのどちらかにファイル保存されています。
- C:\Program Files\Seleniumbasic\Examples\Excel
- shell:Local AppData\SeleniumBasic\Examples\Excel
紹介されているホームページのイメージは、以下のとおりです。
構文は、フレームのキャッチを「上段」⇒「上段真中」⇒「全体(デフォルト)」の順番でハンドルしています。以下構文です。
Private Sub Handle_Frames()
Dim Assert As New Selenium.Assert
Dim Driver As New ChromeDriver
Driver.Get "https://the-internet.herokuapp.com/nested_frames"
Stop
Driver.SwitchToFrame "frame-top"
Assert.Equals 3, Driver.FindElementsByTag("frame").count
Stop
Driver.SwitchToFrame "frame-middle"
Assert.Equals "MIDDLE", Driver.FindElementById("content").Text
Driver.SwitchToDefaultContent
Assert.Equals 2, Driver.FindElementsByTag("frame").count
Stop
Driver.Quit
End Sub
・6行目
フレーム「上段」をキャッチしています。
・7行目
現在キャッチしているフレーム数をAssertで確認しています。
(フレームLeft + フレームMiddle + フレームRight = 3個)
・9行目
フレーム「上段真中」をキャッチしています。
・11行目
ホームページ上の最初(デフォルト)のフレームに戻ります。
・12行目
現在キャッチしているフレーム数をAssertで確認しています。
(フレームTop + フレームBottom = 2個)