Selemium Basic VBA用ドキュメントの日本語訳メモ

VBA

先日、埼玉県のコロナ感染者数グラフを自動化するとき、はじめてSeleniumを使いました。

Documentationは、SeleniumBasicをインストールするとスタートメニューから開けます。ですが全部英語です。

ほぼ自己使用のために自動翻訳でドキュメンテーションを翻訳しています。
Ver.2.0.9.0のDocumentationです。翻訳はGoogle翻訳が基本ですが、所々手動で翻訳。

なんか内容が変だなというところは、追記してその旨明記しています。

本文内、できるだけアンカーリンクを貼りますが、まだ翻訳してないものも先行してアンカーリンクだけつけてるため、クリックしても飛ばないことがある(多い;; ですがよろしくお願いします。

アンカーリンクは「右クリック→新しいウィンドウで開く」で移動すると、並べて参照できるし、戻りやすくて良いかなと思います。

RPAも試したけど、あらゆるものがWeb化されてるなら、VBA+Seleniumの方が軽快だなぁ、なんて思ったりしてます。

Seleniumbasic ダウンロードはこちらから。
Chrome Driver ダウンロードはこちらから。

スポンサーリンク

ChromeDriver Class

継承の階層

Selenium.SearchContext > Selenium.WebDriver > Selenium.ChromeDriver

コンストラクタ

Dim [instance] As ChromeDriver

※ドキュメンテーションには上記のように書かれていますが、実際は次のようにしないと動きません。

Dim [instance] As New ChromeDriver

メソッド

ChromeDriver.ActiveElement

何もフォーカスを持っていない場合、フォーカス、またはBODYを持つ要素を返します。

ChromeDriver.AddArgument

ブラウザを起動し、コマンドラインに追加する引数を追加します。

ChromeDriver.AddExtension

ブラウザに拡張機能を追加します(するためのFirefoxとChromeのみ)

ChromeDriver.CacheStatus

HTML5のアプリケーションキャッシュの状態を取得します。

ChromeDriver.Close

現在のウィンドウを閉じます。

ChromeDriver.Dispose

リソースを解放します。

ChromeDriver.ExecuteAsyncScript

現在のフレームまたはウィンドウのコンテキストでJavaScriptの非同期部分を実行します。

ChromeDriver.ExecuteScript

現在選択されているフレームまたはウィンドウのコンテキストでJavaScriptの一片を実行

ChromeDriver.FindElement

指定されたメソッドを使用して最初のWebElementを検索します。

ChromeDriver.FindElementBy

所与機構と値と一致する最初の子要素を検索します。

ChromeDriver.FindElementByClass

指定されたCSSクラスを一致する最初の要素を検索します。

ChromeDriver.FindElementByCss

指定されたCSSセレクタにマッチする最初の要素を検索します。

ChromeDriver.FindElementById

指定されたIDと一致する最初の要素を検索します。

ChromeDriver.FindElementByLinkText

指定されたリンクテキストに一致する最初の要素を検索します。

ChromeDriver.FindElementByName

指定された名前に一致する最初の要素を検索します。

ChromeDriver.FindElementByPartialLinkText

供給リンクテキストの一部と一致する要素の最初の検索します

ChromeDriver.FindElementByTag

指定されたタグ名に一致する最初の要素を見出します。

ChromeDriver.FindElementByXPath

指定されたXPathクエリに一致する最初の要素を検索します。

ChromeDriver.FindElements

与えられたメカニズムを使用して、現在のコンテキスト内のすべての要素を検索します。

ChromeDriver.FindElementsBy

与えられたメカニズムと値に一致するすべての子要素を検索します。

ChromeDriver.FindElementsByClass

指定されたCSSクラスを一致する要素を検索します。

ChromeDriver.FindElementsByCss

指定されたCSSセレクタにマッチする要素を見出します。

ChromeDriver.FindElementsById

指定されたIDと一致する要素を検索します。

ChromeDriver.FindElementsByLinkText

指定されたリンクテキストに一致する要素を検索します。

ChromeDriver.FindElementsByName

指定された名前に一致する要素を検索します。

ChromeDriver.FindElementsByPartialLinkText

供給リンクテキストの一部と一致する要素の最初の検索します

ChromeDriver.FindElementsByTag

指定されたタグ名に一致する要素を検索します。

ChromeDriver.FindElementsByXPath

指定されたXPathクエリに一致する検索します要素。

ChromeDriver.Get

現在のブラウザセッションでWebページをロードします。 Openメソッドと同じです。

ChromeDriver.GetClipBoard

クリップボードからテキストを返します。

ChromeDriver.GoBack

ブラウザの歴史の中で後方に一歩を行きます。

ChromeDriver.GoForward

ブラウザの履歴に一歩進みます。

ChromeDriver.IsElementPresent

「を検証は、指定された要素は、ページ上のどこかにあるということ。」

ChromeDriver.PageSource

最後に、ブラウザによってロードされたページのソースを取得します。

ChromeDriver.PageSourceMatch

正規表現にマッチする最初の発生を返します。

ChromeDriver.PageSourceMatches

戻り値の正規表現に一致するすべての出現箇所。

ChromeDriver.Quit

ブラウザを閉じてwebdriverをの処分

ChromeDriver.Refresh

現在のページを更新します。

ChromeDriver.Send

カスタマイズされたコマンドを送信します。

ChromeDriver.SendKeys

ブラウザへの一連のキーストロークを送信します。

ChromeDriver.SetBinary

使用するブラウザの実行ファイルへのパスを設定

ChromeDriver.SetCapability

webdriverをするために特定の機能を設定します

ChromeDriver.SetClipBoard

クリップボード内のテキストを設定します。

ChromeDriver.SetPreference

Firefoxのwebdriverをのための特定の好みを設定します

ChromeDriver.SetProfile

Firefoxのwebdriverをのための特定のプロファイルを設定します

ChromeDriver.Start

新しいSeleniumのテストセッションを開始します

ChromeDriver.StartRemotely

リモートで新しいSeleniumのテストセッションを開始します

ChromeDriver.SwitchToAlert

ページ上の警告にフォーカスを切り替えます。

ChromeDriver.SwitchToDefaultContent

ページがiFrameのが含まれている場合、ページ上の最初のフレームまたはメイン文書のいずれかを選択します。

ChromeDriver.SwitchToFrame

インデックス(ゼロベース)、名前またはWebElementにより、指定されたフレームにフォーカスを切り替えます。

ChromeDriver.SwitchToNextWindow

次のウィンドウにフォーカスを切り替えます。

ChromeDriver.SwitchToParentFrame

現在選択されているフレームの親フレームを選択します。

ChromeDriver.SwitchToPreviousWindow

前のウィンドウにフォーカスを切り替えます

ChromeDriver.SwitchToWindowByName

名前で指定されたウィンドウにフォーカスを切り替えます。

ChromeDriver.SwitchToWindowByTitle

タイトルによって指定されたウィンドウにフォーカスを切り替えます。

ChromeDriver.TakeScreenshot

現在のウィンドウのスクリーンショットを取ります

ChromeDriver.Until< T>

デリゲート機能のための待機が返すことがnullまたは真実ではありません

ChromeDriver.Wait

次のコマンドを実行する前に、ミリ秒単位で指定された時間を待って

ChromeDriver.WaitForScript

本当かどうかはnullを返すためにはJavaScriptの作品を待ち。

ChromeDriver.WaitNotElement

不足しているべき要素を待ちます。

プロパティ

ChromeDriver.Actions

アクションクラスを返します

ChromeDriver.BaseUrl

ベースURLは、Getで相対URLを使用します

ChromeDriver.Keyboard

キーボード

ChromeDriver.Keys

キー

ChromeDriver.Manage

その設定を変更するには、ドライバに指示します。

ChromeDriver.Mouse

マウス

ChromeDriver.Proxy

(webdriverをから継承されます。)

ChromeDriver.Timeouts

ブラウザの設定を管理します。ブラウザを起動する前に定義する必要があります

ChromeDriver.Title

現在のブラウザウィンドウのタイトルを取得します。

ChromeDriver.TouchActions

TouchActions

ChromeDriver.TouchScreen

タッチスクリーン

ChromeDriver.Url

ブラウザは、現在表示しているURLを取得します。

ChromeDriver.Window

ユーザーは、現在フォーカスさブラウザのウィンドウを操作できるようにするオブジェクトを取得します。

ChromeDriver.Windows

開いているブラウザウィンドウのウィンドウハンドルを取得します。

コードサンプル

Public Sub Script()
  Dim driver As New ChromeDriver
  driver.Get "http://www.google.com"
  ...
  driver.Quit
End Sub
スポンサーリンク

メソッド FindElementsByCss

※Element”s”の方。 sがないやつは別。

構文

Dim instance As SearchContext
Dim cssselector As String
Dim minimum As Integer
Dim timeout As Integer
Dim returnValue As WebElements

returnValue = instance.FindElementsByCss(cssselector, 
	minimum, timeout)

引数

cssselector

Type: System.String
検索対象のCSS セレクタ

例 ”.news > ul > li > span”
※本当のcssは、中間要素を飛ばしても効きますが、このメソッドでの指定は中間要素を飛ばすと検知されません。

<div class="wrap">
  <div class="text">
    <h3 class="title">見出し</h3>
    <p>本文はここにあります。</p>
  </div>
</div>

このようなHTMLドキュメントに対しては

elements = Driver.FindElementsByCss(".wrap > .title").Text   ' 正しくスクレイプできない
elements = Driver.FindElementsByCss(".wrap > .text > .title").Text   '正しく「見出し」とスクレイプされる

minimun(オプション)

Type: System.Int32
オプション:待機する要素の最小数

timeout (Optional)

Type: System. Int32
オプション:タイムアウト ms

戻り値

戻り値の型: WebElements

スポンサーリンク

メソッド FindElementByCss

※Element、sがない方。

構文

Dim instance As SearchContext
Dim cssselector As String
Dim timeout As Integer
Dim raise As Boolean
Dim returnValue As WebElement

returnValue = instance.FindElementByCss(cssselector, 
	timeout, raise)

引数

cssselector

Type: System.String
検索対象のCSS セレクタ

例 ”.news > ul > li > span”

timeout (オプション)

Type: System. Int32
オプション:タイムアウト ms

raise(オプション)

Type:System.Boolean
オプション:Trueのとき、タイムアウト経過後に例外を発生させる

戻り値

戻り値の型: WebElement またはnull

※当店注 直接Driverに対して実行したときは、検索結果の最初の要素が入ります。下記コードのようにWebElementsから1個ずつ取り出すこともできます。要素が入りますが、そのままでは使えず、.Text.Attributeを使って値を取り出します。
下記は当ブログ掲載 埼玉県のオープンデータをスクレイプするコード

Dim Driver As New Selenium.WebDriver
Driver.start "chrome"
Dim elements As Selenium.WebElements
Dim element As Selenium.WebElement
Set elements = Driver.FindElementsByCss(".dropdown > ul > li > a")
    count = elements.count
    For Each element In elements
      result = element.Attribute("href")
      If result <> "" Then DlTarget = result
    Next
    DlResult = URLDownloadToFile(0, DlTarget, UserPath & "\saitama-covid-opendata.csv", 0, 0)
スポンサーリンク

メソッド Get

現在のブラウザセッションでウェブページを読み込みます。Openメソッドと同じです。

構文

Dim instance As WebDriver
Dim url As String
Dim timeout As Integer
Dim raise As Boolean
Dim returnValue As Boolean

returnValue = instance.Get(url, timeout, raise)

引数

url

Type: System.String
URL

例 ”.news > ul > li > span”

timeout (オプション)

Type: System. Int32
オプション:タイムアウト ms 無限大=-1

raise(オプション)

Type:System.Boolean
オプション:Trueのとき、タイムアウト経過後に例外を発生させる

戻り値

戻り値の型: Boolean
タイムアウト時間内にURLが開いたらTrueが返る。それ以外はFalse

スポンサーリンク

クラス WebElements

継承の階層

System. Object > Selenium. List > Selenium. WebElements

構文

Dim instance As WebElements

配列っぽい格納をしますが配列ではなく Selenium.Listです。オブジェクト型なので代入はSetにより行います。

Set instance = [WebElementsを返す構文]

メソッド

Add(Object)

リスト内の値を追加します。

Add(WebElement)

ウェブ要素を追加します。

AddRange

リストで、一度に複数の値を追加します。

Attribute

各要素の属性とのリストを返します。

Clear

リストをクリアします

Contains

リストに値が含まれている場合にtrueを返します。

Convert< T>

それぞれの値に変換します。

CopyTo

アレイにコピー値を

Distinct

重複を削除

ExecuteAsyncScript

各Web要素を返すすべての結果に対してのJavaScriptの非同期部分を実行します。

ExecuteScript

各Web要素を返すすべての結果に対してのJavaScriptの部分を実行します。

First

最初の項目を返します。

GetEnumerator

リストの列挙子を返します。

IndexOf

値のインデックスを返します。

Insert

インデックスの値を挿入

Last

最後の項目を返します。

LastIndexOf

端から始まる値のインデックス。

Remove

値を削除します

RemoveAt

インデックスの値を削除します

Sort

エレメントをソート

Text

各要素のテキストを含むリストを返します。

ToArray

値を配列として返します
※ExcelのオブジェクトブラウザーにToArrayがありません。実際エディタでも候補として出ないので、これはVBAでは使えないんじゃないかと思います。

ToExcel

Excelのセル範囲に値をコピーします。ターゲットは、アドレス、ワークシートまたは範囲であることもできます。

Values()

値を配列として返します

Values(Object, Int32, Int32)

戻り値の各要素の数値に解析されたテキストを含むリスト

プロパティ

Count

itemsの数を返します。

IsFixedSize

利用不可

IsReadOnly

利用不可

IsSynchronized

偽を返します。

Item

提供されたインデックスにWebElementを取得

SyncRoot

nullを返します。

パソコン教室・キュリオステーション志木店からのお知らせ
レッスンはオンラインで受講できます

パソコン教室・キュリオステーション志木店では、本年よりオンラインでの在宅レッスンを実施しております。
教室の全コースがオンラインで受講可能。実際にインストラクターがご対応いたします。
1時間の無料体験レッスンはいつでも予約できます。詳しくは公式ページをご覧ください。

スポンサーリンク
キュリオステーション志木店運営をフォローする
志木駅前のパソコン教室・キュリオステーション志木店のブログ

コメント

タイトルとURLをコピーしました