今回、4つの構文を紹介します。表題でドライバーの取得と銘打っていますが、普通にホームページを取得(get)するのは最初の構文だけで、後はほぼHTMLを構文上で作成し、その作成したHTMLの内容を取得する構文になっています。
- 利用目的は業務効率化です。(テスト自動化ではありません)
- ブラウザはGoogleChromeが対象です。(EdgeやFirefoxは対象外)
- 原文のVBAでは現在エラー発生する場合が多いため、修正を加えてます。
Examples.xlsmの保存場所(ここをクリック)
Examples.xlsmが保存されている場所は、SeleniumBasicがインストールされているサブフォルダ内になります。SeleniumBasicのインストール完了時に保存フォルダを確認することができます。ただ、大体以下フォルダのどちらかにファイル保存されています。
- C:\Program Files\Seleniumbasic\Examples\Excel
- shell:Local AppData\SeleniumBasic\Examples\Excel
相対参照でdriver取得
主にURLを相対参照で取得する構文の紹介です。
Private Sub GetWebPage_Url()
Dim Assert As New Selenium.Assert
Dim Driver As New ChromeDriver
Driver.Get "https://www.google.co.jp"
Assert.Equals "https://www.google.co.jp/", Driver.URL
Stop
Driver.Get "/intl/ja/about/" '相対参照を利用
Assert.Equals "https://about.google/", Driver.URL
Stop
Driver.baseUrl = "https://www.google.co.jp/intl/ja"
Driver.Get "/policies/privacy"
Assert.Equals "https://policies.google.com/privacy?hl=ja&gl=jp", Driver.URL
Driver.Quit
End Sub
4行目:通常のドライバー取得。URLを絶対参照で取得。
7行目:4行目で取得したURLから相対参照でURLを取得。
10行目:baseUrlメソッドで相対参照のベースURLを設定します。
SeleniumBasicのチュートリアルの説明でも"Base URL to use a relative URL with Get"とありますので、相対参照用のメソッドとして利用するメソッドになります。
11行目:10行目のベースURLに対し、相対参照でドライバーを取得しています。
HTMLファイルを作成し、ドライバー取得
HTMLファイルを作成し、Cドライブの一時フォルダにファイルを保存します。保存したHTMLファイルのドライバーを取得し、Chromeで表示させます。
Private Sub GetWebPage_File()
Const html As String = _
"<!DOCTYPE html>" & _
"<html lang=""ja"">" & _
"<head><title>My title</title></head>" & _
"<body><h1>My content</h1></body>" & _
"</html>"
Dim file As String
file = Environ("TEMP") & "\mypage.html"
Open file For Output As #1
Print #1, html
Close #1
Dim drv As New ChromeDriver
drv.Get file
Stop
drv.Quit
End Sub
2~7行目:HTMLのソースコードを設定
9~13行目:HTMLソースコードをテキストファイルに書き出し、一時フォルダに保存
16行目:保存したHTMLファイルを呼出し、ドライバーを取得
HTMLソースコードでドライバー取得
前項では、HTMLファイルを一度作成してから、ファイルを呼び出しましたが、この構文は、HTMLファイルを作成することなく、HTMLソースコードで直接ドライバーを取得します。
Sub GetWebPage_DataScheme()
Const html As String = _
"data:text/html;charset=utf-8," & _
"<!DOCTYPE html>" & _
"<html lang=""ja"">" & _
"<head><title>My title</title></head>" & _
"<body><h1>My content</h1></body>" & _
"</html>"
Dim drv As New ChromeDriver
drv.Get html
Stop
drv.Quit
End Sub
2~8行目:HTMLのソースコードを設定
11行目:直接HTMLのソースコードでドライバー取得
JavaScript構文でHTMLソース呼出し
JavaScript構文を利用し、HTMLソースを呼び出す構文の紹介です。
Sub GetWebPage_Javascript()
Const html As String = _
"<!DOCTYPE html>" & _
"<html lang=""en"">" & _
"<head><title>My title</title></head>" & _
"<body><h1>My content</h1></body>" & _
"</html>"
Const JS_WRITEPAGE = _
"var txt=arguments[0];" & _
"setTimeout(function(){" & _
" document.open();" & _
" document.write(txt);" & _
" document.close();" & _
"}, 0);"
Dim drv As New ChromeDriver
drv.Get "about:blank"
drv.ExecuteScript JS_WRITEPAGE, html
Stop
drv.Quit
End Sub
2~7行目:HTMLのソースコードを設定
9~15行目:JavaScript構文の設定
18行目:空白のページのドライバーを取得
19行目:ExecuteScriptメソッドでJavaScript構文を呼出し