SeleniumBasic備忘録(Excel VBAでInternet Explorerなどを操作)
WEB自動化ツール「Selenium」を Excel VBA で使える「SeleniumBasic」について、使い方のメモを残しておきます。
SeleniumBasic 豆知識
- SeleniumBasic は、昔 Selenium VBA という名前だった。
- SeleniumBasic インストール時、各種WebDriverも一緒にインストール可能。つまり、いろんなブラウザを操作できる。
- サンプルは基本的に Firefox を前提にしている。というか動作確認は Firefox のみと書かれている。
SeleniumBasicの導入
SeleniumBasic をダウンロード&インストール(Download から)
インストール時はWebDriverも一緒にインストールする。
Excel VBA エディタの「ツール」→「Selenium Type Library」にチェック
Internet Explorer を使う際は、Internet Explorer Driver 固有の設定や注意点を意識すること。(Required Configuration を確認のこと)
特に、IE 11ではレジストリ設定が必要なので忘れない。(手元の環境では32bit版向けの設定でいけた。)
SeleniumBasic向けのコードの書き方
こんな感じで Excel VBA を書く。(適当に書き換えてください。)
Sub SeleniumTest() Dim driver As New IEDriver driver.Get “http://teradas.net” driver.FindElementByName("username").Clear driver.FindElementByName("username").SendKeys "somebody" driver.FindElementByName("password").Clear driver.FindElementByName("password").SendKeys "complexpassword" driver.FindElementByName("login").Click ' uncomment to wait or stop the browser if you want. ' Application.Wait Now + TimeValue("00:00:15") ' Debug.Assert 0 driver.Quit End Sub
上記では IEDriver を指定したが、他にも以下が指定可能。
- ChromeDriver
- FirefoxDriver
- OperaDriver
- PhantomJSDriver (画面無し軽量ブラウザ)
うまく動かない場合は、WebDriver の最新版を用意して SeleniumBasic のインストール先に上書きすると良い。
SeleniumBasic で使えるコマンドと使い方は以下が参考になる。
- SeleniumBasicでExcelVBAからFirefoxを自動操作するための覚書 | dsp74118の補完庫
- Excel/VBA : VBA Seleniumを利用してWeb情報を取得(基本操作編) | DN-Web64
また、込み入った使い方は公式サンプルを参考にするとよい。
特に、ファイルダウンロード周りに関しては、「Example.xlsm」を見ると、IEではかなりトリッキーなことをやっていることが分かるので一見の価値あり。
コマンドリファレンスっぽいモノは見当たらないが、VBA のオブジェクトブラウザーから Selenium の各クラス内を見れば各メンバの一覧と使い方は確認できますし、最悪、オープンソースなのでCom周りのインターフェースを見ても分かるでしょ系。
実行完了時、ブラウザのウィンドウは自動で閉じられる。開発時など、それでは困る場合は適当に Application.Wait でウェイトを入れるか、 Debug.Assert 0 でブラウザを開いたまま停止させてもよい。
そんな感じ。しばらく色んな組み合わせで Selenium 触ってると思います。