2014年3月19日水曜日

画面キャプチャを取得する : ExcelからFirefox自動制御(15)

【はじめに】

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
    driver.Start "firefox", "http://www.google.com/"
    driver.get "/"
    driver.findElementByName("q").SendKeys ("さばの味噌煮")
    driver.findElementByName("btnK").Click
 
    driver.waitForTextPresent ("に関連する検索キーワード")
    driver.getScreenshot().Copy
    driver.getScreenshot().SaveAs ("SABA_NO_MISO_NI.bmp")
End Sub

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

Googleのページを開き、「さばの味噌煮」で検索し、検索結果のページの画面キャプチャを取得します。

getScreenshotメソッドで、スクリーンショットを取得します。スクリーンショットは、ページ全体を1画像にまとめたものが取得できます。

さらに、copyメソッドを呼び出すと、クリップボードに画像がコピーされます。

また、SaveAsメソッドを呼び出すとファイルに保存可能です。第1引数には、保存するファイル名またはパスを指定します。なお、デフォルトの保存位置は、動作確認した限りでは、ユーザーのドキュメントフォルダでした。