【golang】ChromeOptionsを設定する

Go言語で「agouti」というライブラリを使用し、WebDriverを「ChromeDriver」にしてChromeを動かすとき、「ChromeOptions」を設定してなにかしらの制御ができる

ChromeOptionsを設定することで、
「PDFのURLにアクセスしたときにブラウザで表示せず、ダウンロードする」ことができる

以前、pythonでChromeDriverを使ってPDFをダウンロードする物を作った
pythonの参考ページ→「Selenium3のChromeDriverでpdfをダウンロードする

で、Go言語のときのChromeOptionsの設定の書き方を調べた結果、下の記述で同様に動かせたのでメモ

package main

import (
"github.com/sclevine/agouti"
"time"
)

func main() {
   agoutiDriver := agouti.ChromeDriver(
      // ここでChromeOptions
      agouti.ChromeOptions("prefs", map[string]interface{}{
         "download.default_directory": "D:\\",// 保存先を「Dドライブ直下」に指定している
         "download.prompt_for_download": false,
         "download.directory_upgrade": true,
         "plugins.plugins_disabled": "Chrome PDF Viewer",
         "plugins.always_open_pdf_externally": true,
      }),
      agouti.ChromeOptions("args", []string{
         "--disable-extensions",
         "--disable-print-preview",
         "--ignore-certificate-errors",
      }),
      // ここまで
      agouti.Debug,
   )

   agoutiDriver.Start()
   defer agoutiDriver.Stop()
   page, _ := agoutiDriver.NewPage()
   page.Navigate("http://example.com/sample.pdf")// URLは記述例なので、適当に変えて 

   time.Sleep(10 * time.Second)
}

ChromeOptionsの説明:「Capabilities & ChromeOptions – ChromeDriver – WebDriver for Chrome

上記のサイトのページの上から半分くらいにある「chromeOptions object」の項目に「agouti.ChromeOptions(“args”, ***)」で指定している「”args”」などの説明がある

自分のコードを例に、使っている「”args”」と「”prefs”」は以下のように書いた
「”args”」は「Type」が「list of strings」なので、Go言語の「[]string{}」
「”prefs”」は「Type」が「dictionary」なので、Go言語の「map[string]interface{}」

調べてた時に参考になったページ→「Support headless Google Chrome (and Chromium) · Issue #109

1つ困っていることがあって、
「ダウンロード中にブラウザを閉じるとダウンロード失敗になるので、ダウンロードが終わるまで待機する」みたいな方法を知らないので
31行目に「time.Sleep(10 * time.Second)」(10秒待つ)記述をしている

わかったら書く()

コメントを残す

メールアドレスが公開されることはありません。