2014年3月12日水曜日

プルダウンメニューを選択する : ExcelからFirefox自動制御(8)

【はじめに】

SeleniumVBAを用いて、VBA (ExcelやWordなど) からFirefoxを自動制御する方法のサンプルコードを掲載しています。

動作対象は、SeleniumVBAの仕様に準じ、Microsoft Office2003 - 2013、Firefox Ver.8以降です。
(手元では、SeleniumVBA  v1.0.18.0 に、Windows7 + Firefox27.0.1, Windows8.1 + Firefox27.0.1の組み合わせで動作確認しています。)

サンプルコードは、SeleniumWrapper Type Library を参照設定すれば、コピー&ペーストで動作するように作成しています。

【サンプルコード】

Sub StartFirefox()
    Dim driver As New SeleniumWrapper.WebDriver
    Call driver.Start("firefox", "http://law.e-gov.go.jp/")
    Call driver.get("/cgi-bin/idxsearch.cgi")
   
    Call driver.findElementByName("Y_TYPE").AsSelect.selectByIndex(1) '0はじまり
    'Call driver.findElementByName("Y_TYPE").AsSelect.selectBytext("いずれかの用語を含む")
End Sub

【サンプルコードの解説】

e-Govの法令データ提供システムのページを開き、法令用語検索の検索オプション(プルダウンメニュー)で「いずれかの用語を含む」を選択します。

findElementByNameメソッドで、プルダウンメニュー要素(WebElementクラスのインスタンス)を取得します。

続いて、AsSelectプロパティを呼び出し、選択操作用のコマンドをまとめたSelectクラスのインスタンスを取得します。(選択操作をするためのおまじない、とでも思って頂ければOKかと思います。)

あとは、selectByIndexメソッドで、プルダウンメニューで選択したい要素の、上からの順位(0始まり)を指定します。なお、選択したい要素の文字列が分かっている場合は、selectByTextメソッドを利用できます。また、要素の値が分かっている場合は、selectByValueメソッドが利用可能です。