【SeleniumVBA】スクレイピングで使うメソッドについて説明します。

VBAスクレイピング

こんにちは、blueです。

前回はSeleniumVBAの導入方法について説明しました。

今回はSeleniumVBAに搭載されている各種メソッドについて説明します。

SeleniumBasic, TinySeleniumVBAを利用されたことのある方はメソッド名が違うだけなので簡単に使用できると思いますが、初めての方向けにわかりやすく説明するようにします。

なお、2022年9月以降インストール方法の変更により変数の宣言方法が変わっています。
詳しい記事はこちらをご確認ください。


VBAを使ったものではありませんが、Seleniumを勉強する為の基本的な書籍です。今回のメソッドに関する記載も多くなされており、困ったときの助けになります。

スポンサーリンク

要素の取得

条件に合う要素の取得(FindElementメソッド, FindElement〇〇〇メソッド)

条件にマッチした要素を取得する場合に使用します。

書き方は2通りあります。

前者はSeleniumVBAの前身のTinySeleniumVBA, 後者SeleniumBasicの書き方になりますがどちらでもOKです。

  • FindElement(By.ClassName,●●●)
  • FindElement(By.CssSelector, ●●●)
  • FindElement(By.ID, ●●●)
  • FindElement(By.Name, ●●●)
  • FindElement(By.TagName, ●●●)
  • FindElement(By.XPath, ●●●)
  • FindElementByClassName(●●●)
  • FindElementByCssSelector(●●●)
  • FindElementByID(●●●)
  • FindElementByName(●●●)
  • FindElementByTagName(●●●)
  • FindElementByXPath(●●●)

CssSelectorXPathは以下の様に取得します。

1 Chromeの右上のボタンをクリックする
2「その他のツール」をクリックする
3「デベロッパーツール」をクリックする

4「要素の取得」ボタンをクリックする
5 取得したい場所をマウスでクリックする
6「デベロッパーツール」の青く塗りつぶされた場所を右クリックする
7Copy→Copy Selector(Copy XPath)で取得する

あとはFindElementの第二引数にコピーすればOKです。文字列なので””で囲うことを忘れないようにしてください。

ClassNameID, Name, TagNameはHTMLコードを利用して取得します。

HTMLについては以下で詳しく説明していますのでご参考下さい。

HTMLが理解できるようになればタグなどから情報を取得できるようになります。

条件に合うすべての要素の取得(FindElementsメソッド,FindElements〇〇〇メソッド)

条件にマッチしたすべての要素を取得する場合に使用します。

メソッドは以下の通りです。こちらも2通りの書き方があります。どちらでもOKです。

  • FindElements(By.ClassName,●●●)
  • FindElement(By.Name, ●●●)
  • FindElement(By.TagName, ●●●)
  • FindElementsByClassName(●●●)
  • FindElementByName(●●●)
  • FindElementByTagName(●●●)

IDやCssSelector, XPathは性質上ここでは使わないのでメインはこの3つになります。

以下ではTagTableであるすべての要素を取得しています。

Driver.FindElements(By.TagName, "table")

FindElementsは条件に合う情報をまとめて取得してその中の要素を検索するときによく使います。
Excel VBAでいうWorksheetsコレクションとRangeオブジェクトのような関係です。
一意な情報を取得するFindElementメソッドより高度な取得方法になります。

要素の内容の取得

GetText, GetAttributeメソッド

要素内に表示されている文字や値を取得する際はGetTextやGetAttributeメソッドを使います。

メソッドは以下の通りです。

  • Driver..FindElement(By.〇〇〇,●●●).GetText
    もしくはDriver.FindElementBy〇〇〇(●●●).GetText
  • Driver..FindElement(By.〇〇〇,●●●).GetAttribute(“value”)
    もしくはDriver.FindElementBy〇〇〇(●●●).GetAttribute(“value”)

どちらが使えるかは以下で確認することができます。

1 以下の様に要素を選択後、「プロパティ」を選択する。

TextValueの項目に書かれている内容が取得できる内容となります。

右上の「Gmail」と書かれたテキストはtextとして記載されていることがわかります。

クリックすると拡大します

こちらはGetTextメソッドでの取得が可能です。

一方「Google検索」valueとして記載されていることがわかります。

クリックすると拡大します

こちらはGetAttributeメソッドの引数を“value”にすることで取得することができます。

このように要素内のテキストや値の取得は2つのメソッドを使い分ける必要があります。

要素の操作

Clickメソッド

ボタンなどを押す際はClickメソッドを使います。

メソッドは以下の通りです。

  • Driver..FindElement(By.〇〇〇,●●●).Click
    もしくはDriver..FindElementBy〇〇〇(●●●).Click

ユーザー操作によってプログラムが動く仕組みはイベントと呼ばれ、JavaScriptに記載されています。

JavaScriptについての記事は以下をご参考ください。

SendKeysメソッド

ブラウザ上のボックスなどにテキストを入力する際はSendKeysメソッドを使用します。

メソッドは以下の通りです。

  • Driver..FindElement(By.〇〇〇,●●●).SendKeys “テキスト”
    もしくはDriver..FindElementBy〇〇〇(●●●).SendKeys “テキスト”

SendKeysメソッドの引数に入力したい文字列を記載します。

ウィンドウの操作

ブラウザを選択し立ち上げる

ブラウザを選択し、立ち上げるにはStartChrome〇〇〇メソッドOpenBrowserメソッドを使います。

  • Driver.Start〇〇〇(〇〇〇=Chrome, Edge, Firefox)
  • Driver.OpenBrowser

OpenBrowserメソッドを使う際は先にStart〇〇〇メソッドで使用するブラウザを選択するようにしてください。

URLに移動する

指定URLに移動する際はNavigateToメソッドを使います。

  • Driver.NavigateTo “URL”

Navigateメソッドの引数にURLを記載すればOKです。

ブラウザを閉じる

ブラウザを閉じるにはCloseBrowserメソッドShutDownメソッドを使います。

  • Driver.CloseBrowser
  • Driver.Shutdown

CloseBrowserメソッドは今操作を行っているブラウザ、ShutDownメソッドはすべてのブラウザを閉じます。

ページ上のアラート(警告)画面に移行

ページ上に表示されるアラートを操作するには以下のメソッドを使用します。

  • Driver.AcceptAlert
  • Driver.DismissAlert
  • Driver.GetAlertText
  • Driver.SetAlertText

AcceptAlertメソッドは警告画面で「OK」をクリックする操作、DismissAlertメソッド「キャンセル」や「いいえ」をクリックする操作になります。

GetAlertTextメソッドは警告画面に表示されるテキストを取得するメソッドになります。

SetAlertTextメソッドは警告画面に表示されるボックスにテキストを入力するメソッドになります。

このコマンドのみ引数にパラメーターを指定する必要があります

以下はAlert画面でテキストに「tama」と記載するコードです。

 Driver.SetAlertText "tama"

詳しくはこちらの記事をどうぞ

次のページに進む、前のページに戻る

ブラウザの「進む」、「戻る」ボタンを使用する際は以下のメソッドを使用します。

  • Driver.GoBack
  • Driver.GoFoward

現在のURLを取得する、タイトルを取得する

現在対象となっている画面のURL、タイトルを取得する際は以下のメソッドを使用します。

  • Driver.GetCurrentURL
  • Driver.GetTitle

このメソッドは対象画面がわからなくなった場合や、新しいウィンドウが開いた場合によく使います。

画面を最大化する

対象となっている画面を最大化する際は以下のメソッドを使用します。

  • Driver.MaximizeWindow

その他

JavaScriptの実行

SeleniumVBAにはJavaScriptを実行する為のメソッドが存在します。

  • Driver.ExecuteScript “JavaScriptのコード”

このメソッドが非常に有用で、使いこなせればTinySeleniumVBA単独ではできないような処理JavaScriptとして実行することができます。

以下はSeleniumBasic向けの記事ですが記載方法は同じです。

活用範囲が広がるので是非ご参考ください。

待機処理

プログラム中で指定時間待機する際はWaitメソッドを使用します。

  • Driver.Wait ●●●

●●●には秒数をミリ秒で記載します。1秒の場合は1000となります。

まとめ

今回はSeleniumVBAに搭載されている各種メソッドについて説明しました。

SeleniumVBAに搭載されているメソッドは多く、SeleniumBasicで使われているメソッドをほぼ使用することができるようです(一部メソッド名が違っていたりします)。

ただSeleniumVBAに関する記事は少ないです、

以下でSeleniumBasiceを学んでいただければSeleniumVBAも簡単に使えるようになると思いますのでぜひこちらの記事も参考にしてください。

VBAを使ったものではありませんが、Seleniumを勉強する為の基本的な書籍です。今回のメソッドに関する記載も多くなされており、困ったときの助けになります。

SeleniumVBAに関する記事はこちら
【SeleniumVBA】初心者向けに導入方法についてわかりやすく説明します(Excel VBA)
【SeleniumVBA】スクレイピングで使うメソッドについて説明します。
【SeleniumVBA】Yahooメールへのログイン方法をわかりやすく説明する(Excel VBA)
【SeleniumVBA】スクレイピングで使うメソッドについて説明します2(Excel VBA)
【SeleniumVBA】スクレイピングをする為のメソッド一覧表
【SeleniumVBA】ブラウザを操作するメソッドについてサンプルコードを紹介します
【SeleniumVBA】2022年9月の更新に伴うコードの変更点について説明します。
【SeleniumVBA】アラート処理に関するメソッドについてコードを紹介します
【SeleniumVBA】待機処理に関するメソッドについてコードを紹介します

コメント

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