Ⅰ. はじめに
タイトルの通り「Go で chromedp を利用して Chrome を自動操作する方法」です。
Ⅱ. やり方
1. ライブラリをインストールする
go get github.com/chromedp/chromedp
2. サンプルプログラムを書く
package main
import (
"context"
"log"
"time"
"github.com/chromedp/chromedp"
)
func main() {
allocCtx, cancel := chromedp.NewExecAllocator(context.Background(), []chromedp.ExecAllocatorOption{
chromedp.NoFirstRun,
chromedp.NoDefaultBrowserCheck,
chromedp.DisableGPU,
chromedp.Flag("disable-infobars", true),
}...)
defer cancel()
ctx, cancel := chromedp.NewContext(allocCtx, chromedp.WithLogf(log.Printf))
defer cancel()
ctx, cancel = context.WithTimeout(ctx, 15*time.Second)
defer cancel()
var value string
var attributes map[string]string
err := chromedp.Run(ctx,
chromedp.Navigate("https://example.org/"),
chromedp.WaitVisible("/html/body/div/h1"),
chromedp.InnerHTML("/html/body/div/h1", &value),
chromedp.Attributes("/html/body/div/p[2]/a", &attributes),
)
if err != nil {
log.Fatal(err)
}
log.Printf("h1 innerHTML = %s", value)
log.Printf("a href = %s", attributes["href"])
}
実行結果
h1 innerHTML = Example Domain
a href = http://www.iana.org/domains/example