usage_domでは、SeleniumBasicでdom(Document Object Model )によるHTMLのbodyソースの取得をしています。私は、普段domを扱っていないのでdomについての解説は以下ページを参照しました。
DOMとは
DOM の具体的な利用方法についてみていく前に、 DOM とはどういった時にどのように利用できるのかなど DOM に関する基本事項について簡単に解説します。
- 利用目的は業務効率化です。(テスト自動化ではありません)
- ブラウザはGoogleChromeが対象です。(EdgeやFirefoxは対象外)
- 原文のVBAでは現在エラー発生する場合が多いため、修正を加えてます。
Examples.xlsmの保存場所(ここをクリック)
Examples.xlsmが保存されている場所は、SeleniumBasicがインストールされているサブフォルダ内になります。SeleniumBasicのインストール完了時に保存フォルダを確認することができます。ただ、大体以下フォルダのどちらかにファイル保存されています。
- C:\Program Files\Seleniumbasic\Examples\Excel
- shell:Local AppData\SeleniumBasic\Examples\Excel
今回は2例紹介します。
目次
HTMLDocumentのメソッド利用
原文では、実行時バインディングでインスタンスの生成していますが、今回は補完機能を利用したいので、事前バインディング(参照設定)を利用します。VBE参照設定でMicrosoft HTML Object Libraryを選択しておきます。以下構文です。
Private Sub dom_htmldocument()
Dim Driver As New ChromeDriver
Driver.Get "https://ja.wikipedia.org/wiki/"
Dim html As Object
Set html = New HTMLDocument
html.Open
html.Write Driver.PageSource()
html.Close
Debug.Print html.body.innerText
Driver.Quit
End Sub
5~6行目:HTMLDocumentインスタンスを生成
7~9行目:htmlオブジェクトにドライバーのページソースを代入
11行目:HTMLソースのbody部をイミディエイトウィンドウに出力
5行目で"Dim html As HTMLDocument"と記入するとエラー発生してしまいます。
JavaScriptの利用
インスタンス生成までは、前例と同様です。下例は、実行時バインディングにしています。
Private Sub dom_JavaScript()
Dim Driver As New ChromeDriver
Driver.Get "https://ja.wikipedia.org/wiki/"
Dim html As Object
Set html = CreateObject("htmlfile")
html.body.innerHTML = Driver.ExecuteScript("return document.body.innerHTML;")
Debug.Print html.body.innerText
Driver.Quit
End Sub
7行目でhtmlオブジェクトにページソースを代入していますが、ページソースの取得をJavaScriptで実行しています。