98d4b0de6e
Before the fix, the added test would give a Pool.Allocate error like: pool could not connect to 9000: timeout waiting for initial target The actual underlying error, which can only be seen if one inspects chrome's stderr, is that it failed to bind to the debugging protocol port if it was already in use. This is of course an issue with the environment that chromedp is being run under, since it was given a port range that wasn't available. However, the confusing error can lead to developers wasting their time instead of spotting the error quickly. Unfortunately, there doesn't seem to be a way to have Chrome exit immediately if it can't bind to the given port. So, instead of relying on it, check if the current process can bind to the port first. Add a test too, where we grab the first port in the pool range, and check that we get an error that's not confusing. Fixes #253. |
||
---|---|---|
client | ||
contrib | ||
kb | ||
runner | ||
testdata | ||
.gitignore | ||
.travis.yml | ||
actions.go | ||
chromedp_test.go | ||
chromedp.go | ||
errors.go | ||
eval.go | ||
go.mod | ||
go.sum | ||
handler.go | ||
input_test.go | ||
input.go | ||
js.go | ||
LICENSE | ||
nav_test.go | ||
nav.go | ||
pool_test.go | ||
pool.go | ||
query_test.go | ||
query.go | ||
README.md | ||
sel_test.go | ||
sel.go | ||
util.go |
About chromedp
Package chromedp is a faster, simpler way to drive browsers supporting the Chrome DevTools Protocol in Go using the without external dependencies (ie, Selenium, PhantomJS, etc).
Installing
Install in the usual Go way:
go get -u github.com/chromedp/chromedp
Examples
Please see the examples project for more examples. Please refer to the GoDoc API listing for a summary of the API and Actions.
Resources
- chromedp: A New Way to Drive the Web - GopherCon SG 2017 talk
- Chrome DevTools Protocol - Chrome DevTools Protocol Domain documentation
- chromedp examples - various
chromedp
examples github.com/chromedp/cdproto
- GoDoc listing for the CDP domains used bychromedp
github.com/chromedp/cdproto-gen
- tool used to generatecdproto
github.com/chromedp/chromedp-proxy
- a simple CDP proxy for logging CDP clients and browsers
TODO
- Move timeouts to context (defaults)
- Implement more query selector options (allow over riding context timeouts)
- Contextual actions for "dry run" (or via an accumulator?)
- Network loader / manager
- Profiler