A faster, simpler way to drive browsers supporting the Chrome DevTools Protocol.
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.
Install in the usual Go way:
$ go get -u github.com/chromedp/chromedpRefer to the Go reference for the documentation and examples. Additionally, the examples repository contains more examples on complex actions, and other common high-level tasks such as taking full page screenshots.
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, chromedp cancels 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, chromedp is 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 chromedp context 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:
ctx, cancel := chromedp.NewContext(context.Background())
defer cancel()
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 chromedp is able
to find out of the box.
headless-shell - A build of headless-shell that is used for testing chromedpchromedpgithub.com/chromedp/cdproto - Go reference for the generated Chrome DevTools Protocol APIgithub.com/chromedp/pdlgen - tool used to generate cdprotogithub.com/chromedp/chromedp-proxy - a simple CDP proxy for logging CDP clients and browsersMake public Selector.Sel or getter Selector.Sel()
Data race in Context.Target between NewContext's cancellation watcher and attachTarget
Expose Chrome 150 foreground-tab and tab-strip metadata
Failing to start after chromium 150 update
Sesssion Replay supporting Video
Screen recording feature (video + audio)
[BUG] v0.14.2 has broken Remote Allocator
chromedp code passes Cloudflare Turnstile locally but not Docker container
Default disable-dev-shm-usage=true may cause file-backed memory growth in long-running containerized workloads
[Bug] generateDocumentOutline does not work without generateTaggedPdf for creating bookmark/index in the PDF