at backyard

Color my life with the chaos of trouble.

mac環境でagoutiを試す際に、思いがけず手間取ってしまったので備忘録。

思いがけないところで妙に詰まってしまったので、物覚えの悪い自分への備忘録。

備忘録として残す理由

このあとに書くが、ググってみると割と様々なやり方が出てきて混乱したので、自分のやり方を備忘録として残しておきたかった。

詰まった内容

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をダウンロードする。

sites.google.com

たぶんこんなファイル名のzipが落とせる。
chromedriver_mac64.zip

zipを解答して、~/Downloads/chromedriver_mac64というファルダ内に実行ファイルを格納した。

次にこのchromedriverにパスを通す。
私はZSHを使っているので、.zshrc内に記述をした。

export PATH=~/Downloads/chromedriver_mac64:$PATH

これで先ほどのサンプルコードを実行できる。