Selenium+VBAで簡単WEB操作自動化

セキュリティ強固な最新ブラウザChromeやEdgeでもWEB画面を自動制御して、WEBサイトのテストやWEBサイトの巡回を簡単に出来るツールがあります。
プログラミング言語PythonとChromeの組み合わせが最も機能が多いようですが、Selenium BasicとVBAの場合、設定画面などのインターフェースとしてEXCELやAccessを使えるのでユーザーに使いやすいです。

出来ること

作成したWEBサイトのテスト
  • 全リンクを再帰的に辿って、リンク切れが無いか調べる。
  • ECサイトで注文が重なった時の性能。
  • コンテンツに不適切な文章が無いか調べる。

などが出来る。

WEBサイトを巡回してデータを集める

定期的にWEBサイトを巡回して、情報を集めたり、画像やPDFのダウンロードが出来る。

予約の取りにくい、早い者勝ちシステムの予約をとる

しっかりした予約サイトでは早い者勝ちのシステムは無いが、医院の予約やキャンプ場の予約などなら出来る。この早い者勝ちシステムに対しては、Seleniumは高い効果を発揮します。

ブラウザを手動で操作するのと、ほぼ同じことが出来るので、人がブラウザを使ってできることなら大概のことが出来ます。

必要なもの

Selenium Basic

GitHubで公開され、日々開発されています。
Release SeleniumBasic v2.0.9.0 · florentbr/SeleniumBasic · GitHub

Microsoft Edgeドライバー

プログラムでブラウザを制御するためのライブラリ
Microsoft Edge WebDriver – Microsoft Edge Developer

Google Chromeドライバーもある

ChromeDriver – WebDriver for Chrome – Downloads (chromium.org)

VBAを動かすためのアプリ

Microsoft EXCELやMicrosoft Accessなど、自分の使いやすいものが良いです。

インストール

それぞれのサイトから指示に従ってインストールすればOKです。
ブラウザのドライバーソフトはブラウザのバージョンと一致させる必要があるので、適時、ブラウザのアップデートを行ってください。
通常、Windowsのアップデートで更新できます。

VBAの場合の参照設定

VBAの場合、ライブラリを事前に参照設定することが出来ます。
これを行うことで、インテリセンス(プロパティの候補を示すなどの機能)が使えるので、プログラミング効率が上がります。

Selenium Basicでは「Selenium Type Library」を追加します。

基本構文

Selenium Basicの機能はブラウザのドライバーを呼び出すことで利用できます。

コード
‘スタート
Sub Start_Browser()

‘■ブラウザ選択。
driver.Start “Edge”

‘■指定URLを開く
Dim URL As String
URL = “https://snkobe.com”
driver.Get URL

‘ウェイト
driver.Wait 1000

‘要素を取得してテキスト入力
driver.FindElementById(“s”).SendKeys (“ユーザー名”)

End Sub

ハマるツボ

Frameに注意です。

Seleniumを使うようになると、XPathでページ内の要素を指定するようになりますが(便利なので)、「No Such Element」などのエラーが出て、目的の要素が取得できないときがあります。
ケアレスミスなども注意ですが、ハマるのが、Frameです。Frameで構成されているページの場合、目的の要素のあるFrameにフォーカスされていないと、名前が正しくても要素が取得できません。しかも、Frameの指定は親子Frame間でしか出来ず、兄弟Frameに直接移動することは出来ません。

例)
‘フレーム取得
‘既定のFrameへまず移動
driver.SwitchToDefaultContent
‘目的のFrameへ移動
driver.SwitchToFrame “wpMain”

サンプル

以下のコードを実行すると

Public driver As New Selenium.WebDriver

‘スタート
Sub Start_Browser()

‘■chrome かEdgeどちらかを選択。
driver.Start “Edge”

‘■Google
Dim URL As String: URL = “https://www.google.co.jp/”
driver.Get URL

‘テキスト
driver.FindElementByName(“q”).SendKeys (“Selenium Basic”)
SendKeys “{ENTER}”, True

End Sub

この動画のように、ブラウザを開き、Googleへ移動して、検索キーワード「Selenium Basic」を入力します。

まとめ

IE時代にはWIN32APIを利用して何でも出来たのですが、セキュリティの強化に伴い、ブラウザのプログラムによる制御にもいろいろな制限が課されました。
Seleniumの場合、基本的にブラウザのドライバーを利用しているので、操作の制限などはありません。SendKeyなどを使えば、手で行う操作のほとんどを自動化できます。
便利で使いやすいのでお勧めします。

もちろん、当社への開発委託も承っています。WEBサイトのテストや定期巡回、タイマー予約操作など、いろいろ応用が出来るので、お気軽にご相談ください。

サイバーネット神戸の最新情報をお届けします