A faster, simpler way to drive browsers supporting the Chrome DevTools Protocol.
Package chromedp is a faster, simpler way to drive browsers supporting the Chrome DevTools Protocol in Go without external dependencies (like Selenium or PhantomJS).
Install in the usual Go way:
go get -u github.com/chromedp/chromedp
Refer to the GoDoc page for the documentation and examples. Additionally, the examples repository contains more complex examples.
I can't see any Chrome browser window
By default, Chrome is run in headless mode. See
DefaultExecAllocatorOptions, and an example to override the default options.
I'm seeing "context canceled" errors
When the connection to the browser is lost,
chromedpcancels the context, and it may result in this error. This occurs, for example, if the browser is closed manually, or if the browser process has been killed or otherwise terminated.
Chrome exits as soon as my Go program finishes
On Linux,
chromedpis configured to avoid leaking resources by force-killing any started Chrome child processes. If you need to launch a long-running Chrome instance, manually start Chrome and connect using
RemoteAllocator.
Executing an action without
Runresults in "invalid context"
By default, a
chromedpcontext does not have an executor, however one can be specified manually if necessary; see issue #326 for an example.
I can't use an
ActionwithRunbecause it returns many values
Wrap it with an
ActionFunc:
chromedp.Run(ctx, chromedp.ActionFunc(func(ctx context.Context) error { _, err := domain.SomeAction().Do(ctx) return err }))
I want to use chromedp on a headless environment
The simplest way is to run the Go program that uses chromedp inside the chromedp/headless-shell image. That image contains
headless-shell, a smaller headless build of Chrome, which
chromedpis able to find out of the box.
chromedpexamples
github.com/chromedp/cdproto- GoDoc listing for the CDP domains used by
chromedp
github.com/chromedp/cdproto-gen- tool used to generate
cdproto
github.com/chromedp/chromedp-proxy- a simple CDP proxy for logging CDP clients and browsers