SeleniumeBasicでドライバー取得 usage_get

リファレンス

 今回、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構文を呼出し

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

VBAを中心とした自動化、効率化の手法を紹介しています。現在は、SeleniumBasicのexamplesを紹介しています。その内、SeleniumBasic以外の手法も掲載したいと思っております。

目次