2014年3月10日月曜日

Wait処理を行う : ExcelからFirefox自動制御(6)

【はじめに】

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.wait(1000)
End Sub

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

http://www.google.com/ を表示し、1000msec(1秒)待機します。

waitメソッドの、第1引数に待機する時間(msec)を指定します。このサンプルコードでは、待機しても何の意味もないですが…。

なお、SeleniumVBA (というか、ラップ元のSelenium)では、通常、明示的にWait操作を行う必要はありません。

指定された要素が存在しない場合は、所定の時間(setImplicitWaitメソッドで設定可能)、探索し、存在しない場合に、例外を投げるように作られています。

実務的には、WebDriverクラスには、waitFor*で始まる便利メソッド(各種条件を満たすまで待機するメソッド)が多数用意されているので、javascriptなどで動的に要素が生成されるページに対しては、もっぱらそれらのメソッドを使うことになると思います。