SeleniumBasicや、.NET Framework等、ツールをインストールする必要が無く、WebDriverの配置のみでVBAからブラウザを操作可能な「TinySeleniumVBA」を利用して、起動済みEdgeを操作する方法です。
TinySeleniumVBAのREADMEにも記載がありますが、
インストール権限のない人でもすぐにブラウザ自動操作に取り掛かることができます
つまり、業務ツールなど管理者権限で設定を前もってしておかないといけない場合でも、設定(環境整備)無しにブラウザ操作の自動化が可能になります。
準備
上記リポジトリからソースをダウンロードして、展開。以下4ファイルを対象のプロジェクトにインポートします。
- Capabilities.cls
- JsonConverter.cls
- WebDriver.cls
- WebElement.cls
プロジェクトの参照設定に以下を追加
- Microsoft Scripting Runtime
対応したWebDriverをダウンロードして、解凍
→ソースの中で、パスを指定するので分かりやすいところに置いておくと良いです
動作確認
Sub TinySeleniumTest()
Dim driver As New WebDriver
' 準備のところで用意し格納した対象のWebDriverを指定
driver.Edge "hoge\msedgedriver.exe"
driver.OpenBrowser
driver.Navigate "https://www.google.co.jp/"
driver.Shutdown
End Sub
もし、うまく実行できない場合は参照に、「Selenium Type Libraly」が含まれていることが原因かもしれませんので、チェックを外して再度試してみてください
(オブジェクト定義が重複してしまっていることが原因です)
起動済みブラウザにも適用
前回の記事で、remote-debugging-portを利用する方法を記載しました。
今回もそれを用います。
ショートカットを作成して簡単にremote-debugging-portを指定してEdgeを立ちあげられるように準備しておいてください(詳しい説明は前回の記事をご覧ください)
ソースを以下のように修正
Sub TinySeleniumTest()
Dim driver As New WebDriver
driver.Edge "hoge\msedgedriver.exe"
' 以下4行を追加と修正
Dim cap As Capabilities
Set cap = driver.CreateCapabilities()
cap.SetOption "debuggerAddress", "127.0.0.1:9222"
driver.OpenBrowser cap
driver.Navigate "https://www.google.co.jp/"
driver.Shutdown
End Sub
これで、起動済みのEdgeをTinySeleniumVBAを用いて操作可能になります。
あとは適宜、DOMを取得するなどして良い感じに利用してください。