思いがけないところで妙に詰まってしまったので、物覚えの悪い自分への備忘録。
備忘録として残す理由
このあとに書くが、ググってみると割と様々なやり方が出てきて混乱したので、自分のやり方を備忘録として残しておきたかった。
詰まった内容
mac環境でGo言語のagoutiを使ってchrome操作を自動化してみようと考えた。
下記のようなコードを書いてテストしてみようとしたが、実行しようとしても実行できなかった。
書いたサンプルコード
package main import "github.com/sclevine/agouti" func main() { // Chromeを利用する agoutiDriver := agouti.ChromeDriver() agoutiDriver.Start() defer agoutiDriver.Stop() page, _ := agoutiDriver.NewPage() // google.co.jpにアクセス page.Navigate("https://www.google.co.jp/") // スクリーンショットを撮影する page.Screenshot("Screenshot.png") }
実行時のエラーメッセージ
$go run sample.go panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x5b196]
chromedriverは既にインストール済みだったが、パスが通っていなかっためエラーとなっているようだった。
chromedriverへのパスの通し方
chromedriver自体もbrewを使った方法や直接バイナリを取ってくる方法など、mac環境内でのセットアップでも色々と方法があるが、私は直接バイナリをダウンロードしてパスを通すやり方を選択した。
まずは下記のリンク先からmac用のchromedriverをダウンロードする。
たぶんこんなファイル名のzipが落とせる。
chromedriver_mac64.zip
zipを解答して、~/Downloads/chromedriver_mac64
というファルダ内に実行ファイルを格納した。
次にこのchromedriverにパスを通す。
私はZSHを使っているので、.zshrc内に記述をした。
export PATH=~/Downloads/chromedriver_mac64:$PATH
これで先ほどのサンプルコードを実行できる。