Chromeがヘッドレスモードに対応した頃、Seleniumで操作したことがあるのですが(下記記事参照)、SeleniumBasicからの操作も試してみることにします。
準備
下記記事でも書いていますが、SeleniumBasicに同梱されているWebDriverのバージョンは古いので、SeleniumBasicを使用する際は、操作対象となるブラウザーのバージョンに合ったファイル(chromedriver.exe)に差し替える必要があります。
ヘッドレス ChromeをSeleniumBasicで操作するVBAマクロ
以前書いた記事では、.Net用のSeleniumを使い「ChromeOptions」でヘッドレスモードを指定したのですが、SeleniumBasicではChromeOptionsが用意されていないようです。
どうすれば良いのか一瞬迷いましたが、「AddArgument」で普通にヘッドレス用のオプションを指定すれば良いようです。
(オプションの詳細については「ヘッドレス Chrome ことはじめ」参照)
Option Explicit Public Sub Sample() Dim pdf As Object 'Selenium.PdfFile With CreateObject("Selenium.ChromeDriver") 'オプションを付けてHeadless Chromeを立ち上げ 'https://developers.google.com/web/updates/2017/04/headless-chrome?hl=ja 参考 .AddArgument "--headless --disable-gpu" .Start .Get "https://www.yahoo.co.jp/" .FindElementById("srchtxt").SendKeys "あいうえお" .FindElementById("srchbtn").Click 'PDFを作成してスクリーンショット貼り付け Set pdf = CreateObject("Selenium.PdfFile") pdf.SetPageSize 210, 297, "mm" pdf.SetMargins 5, 5, 5, 15, "mm" pdf.AddImage .TakeScreenshot, True pdf.SaveAs "C:\Test\Screenshot.pdf" .Quit End With MsgBox "処理が終了しました。", vbInformation + vbSystemModal End Sub
上記コードは、Yahoo!で検索した結果のスクリーンショットを撮り、PDFファイルとして保存する処理を行いますが、同様の処理はchrome.exeのコマンドラインオプションでも行うことができます。
chrome.exe --headless --disable-gpu --print-to-pdf="C:\Test\Screenshot_CMD.pdf" https://search.yahoo.co.jp/search?p=%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A
この記事へのコメントはありません。