SeleniumeBasicでSendメソッドの利用 usage_send

リファレンス

 SeleniumBasicを利用して、sendメソッドの利用方法をご紹介します。SeleniumBasicのチュートリアルには、このメソッドの説明が"Sends a customized command"と記載されていました。
 カスタムコマンドを送信できる様ですが、カスタムできる内容の詳しく掲載されているページが、調べる限りでは見当たりませんでした。ここでは、Examplesの中に掛かれている構文の内容を調べた結果を紹介します。

  • 利用目的は業務効率化です。(テスト自動化ではありません)
  • ブラウザはGoogleChromeが対象です。(EdgeやFirefoxは対象外)
  • 原文のVBAでは現在エラー発生する場合が多いため、修正を加えてます。
Examples.xlsmの保存場所(ここをクリック)

 Examples.xlsmが保存されている場所は、SeleniumBasicがインストールされているサブフォルダ内になります。SeleniumBasicのインストール完了時に保存フォルダを確認することができます。ただ、大体以下フォルダのどちらかにファイル保存されています。

  • C:\Program Files\Seleniumbasic\Examples\Excel
  • shell:Local AppData\SeleniumBasic\Examples\Excel
目次

Sendメソッドのチュートリアル

 チュートリアルにあるSendメソッドを以下に記載します。後ほど、ここに記載されている各引数について検証していきたいと思います。

Dim instance As WebDriver
Dim method As String
Dim relativeUri As String
Dim param1 As String
Dim value1 As Object
Dim param2 As String
Dim value2 As Object
Dim param3 As String
Dim value3 As Object
Dim param4 As String
Dim value4 As Object
Dim returnValue As Object

returnValue = instance.Send(method, relativeUri, 
	param1, value1, param2, value2, param3, value3, param4, value4)

ウィンドウハンドルの取得

 Sendメソッドを使ってウィンドウハンドルのタイトルを取得する構文を紹介します。Sendメソッドの引数でGetリクエストを指定しています。HTTPリクエストのGetコマンドを利用している様です。ホームページ情報を取得する際に利用するGetコマンドとは少し使い方が異なるのか、なぜGetコマンドを利用するのか、私の方では分かりませんでした。

Private Sub Handle_Send_Get()
    Dim driver As New ChromeDriver
    driver.Get "https://ja.wikipedia.org/wiki/メインページ"
    Dim hwnds As selenium.List
    Set hwnds = driver.Send("GET", "/window_handles")
    hwnds.ToExcel Sheet2.Range("A7")
    driver.Quit
End Sub

3行目:ウィキペディアのページ取得
4行目:Selenium List型の宣言
5行目:Sendメソッドにて"GET"を指定。"relativeUri"に"/window_handles"を指定し、ウィンドウハンドルを取得してリスト型に代入。
6行目:リストをExcelシートに出力

リンクのWeb要素を取得(利用不可)

 結論から言いますと、現状利用できる状態ではなさそうな構文なのですが、エラーを発生させない状態まで調べることができましたので、備忘記録のため構文紹介させていただきます。取得値は空白値となってしまい、出力コマンドを実行しても空白値が出力されます。
 構文原文に記載されているコメントでは、"Returns all links elements"と書かれていますので、リンクWeb要素を取得する構文であることが分かります。

Private Sub Handle_Send_Send()
    Dim driver As New ChromeDriver
    driver.Get "https://ja.wikipedia.org/wiki/メインページ"
    Dim links As selenium.List
    Set links = driver.Send("POST", "/elements", "using", "css selector", "value", "検索")
    links.ToExcel Sheet2.Range("A8")
    'Debug.Print links.Item(1)
    driver.Quit
End Sub

3行目:ウィキペディアのページ取得
4行目:Selenium List型の宣言
5行目:Sendメソッドにて"POST"を指定。詳しくは、下段で説明します。
6行目:リストをExcelシートに出力

 上記説明の引数を元に5行目にある、driver.Send("POST","/elements"・・・について、現状分かる範囲を予測も交え解説します。
 "POST"と"/elements"は、"method"と"relativeUri"に該当します。"POST"は、HTTPリクエストのPOSTコマンドを選択している様です。"relativeUri"の"/elements"はおそらくWeb要素の事を指しているのだと思います。"/elements"以外の引数でどの様な値を指定できるのか分かりませんでした。
 "using"と"css selector"は、"param1"と"value1"に該当します。"using"は固定値の様です。試しに他の値を入力してみても、"using"を必ず入力する様にエラー画面で注意されてしまいます。"css selector"は、"css"や"xpath"に引数を入れ替えても構文は通ります。
 "value"と"検索"は、"param2"と"value2"に該当します。"value"は固定値の様です。試しに"value"と"検索"を削って構文をデバッグ実行しても、"value"を指定する様にエラーが発生しました。ウィキペディアのページで事前にディベロッパーツールにてvalue値が設定されているノードを"value2"に入力すると構文でエラーは発生しませんでした。正直構文でエラーを発生させない様に事前に予めvalue値を調べている時点でこのメソッドの活用方法がよく分からなくなってしまいました。。

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

この記事を書いた人

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

目次