2014年3月11日火曜日

リンクを開く : ExcelからFirefox自動制御(7)

【はじめに】

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://www.google.com/")
    driver.get ("/")
    driver.findElementByName("q").SendKeys ("ぐるぐる")
    driver.findElementByName("btnK").Click
    driver.findElementByLinkText("魔法陣グルグル - Wikipedia", 5000).Click
End Sub

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

第5回(ボタンをクリックする)のコードで、"ぐるぐる"で「Google検索」した後、
「魔法陣グルグル - Wikipedia」というテキストのリンクを開きます。

findElementByLinkTextメソッドで、第1引数に指定したテキストのリンク要素(WebElementクラスのインスタンス)を取得します。

第1引数は、リンクのテキストを(1文字1句正確に)指定します。
第2引数は、オプションで、待機時間(msec)を指定できます。

現在、googleの検索結果ページは、一旦空のページを表示後、動的に検索結果が追加される仕様のため、サンプルコードでは、要素が見つかるまで最大で5秒、待機するように指定しています。

WebElementのclickメソッドは、第5回(ボタンをクリックする)のコードと同様です。