Go to file
Daniel Martí 939d377090 avoid hanging when Chrome is closed separately
It's Run that actually starts a Browser, not NewContext. If the browser
is closed or crashes, the browser handler will fail to read from the
websocket, and its goroutines will stop.

However, the target handler's goroutines may not stop. The browser
handler uses a separate cancel function to stop itself when encountering
a websocket error, so that doesn't propagate to the original context
children, like the target handler.

To fix this, make it so that NewContext can keep the cancel function
around, for Run to use it in this scenario. And add a test case that
tests this very edge case, which used to time out before the fix.

Fixes #289.
2019-04-07 19:28:41 +02:00
.github add a simple issue template 2019-02-22 00:13:27 +01:00
kb start the chromedp v2 refactor 2019-04-01 12:17:28 +01:00
testdata don't crash when loading pages with iframes 2019-04-01 12:18:16 +01:00
.gitignore Changing chromedp-gen => cdproto-gen 2018-02-16 07:23:02 +07:00
.travis.yml start running the tests on CI again 2019-04-01 12:18:16 +01:00
actions.go use time.NewTimer instead of time.After in Sleep 2019-04-01 17:03:35 +01:00
allocate_test.go make NewAllocator's cancel func block on Wait 2019-04-06 22:13:40 +02:00
allocate.go avoid hanging when Chrome is closed separately 2019-04-07 19:28:41 +02:00
browser.go avoid hanging when Chrome is closed separately 2019-04-07 19:28:41 +02:00
chromedp_test.go make NewAllocator's cancel func block on Wait 2019-04-06 22:13:40 +02:00
conn.go clean up various pieces of the API 2019-04-01 12:18:16 +01:00
context_test.go avoid hanging when Chrome is closed separately 2019-04-07 19:28:41 +02:00
context.go avoid hanging when Chrome is closed separately 2019-04-07 19:28:41 +02:00
errors.go start the chromedp v2 refactor 2019-04-01 12:17:28 +01:00
eval.go Generic code cleanup 2019-04-03 09:03:41 +02:00
example_test.go make NewAllocator's cancel func block on Wait 2019-04-06 22:13:40 +02:00
go.mod bump cdproto dep to ignore deprecated events 2019-04-06 01:11:43 +02:00
go.sum bump cdproto dep to ignore deprecated events 2019-04-06 01:11:43 +02:00
input_test.go make NewAllocator's cancel func block on Wait 2019-04-06 22:13:40 +02:00
input.go clean up uses of Run in the tests 2019-04-01 19:55:40 +01:00
js.go Splitting repositories 2017-12-28 11:17:14 +07:00
LICENSE Minor code cleanup 2018-03-27 04:31:09 +07:00
nav_test.go clean up uses of Run in the tests 2019-04-01 19:55:40 +01:00
nav.go use consistent context.Context var names 2019-04-01 12:18:16 +01:00
query_test.go consistently use %02d for subtest index names 2019-04-01 19:58:01 +01:00
query.go use consistent context.Context var names 2019-04-01 12:18:16 +01:00
README.md Changing Debugging => DevTools 2018-07-13 12:46:30 +07:00
sel_test.go clean up uses of Run in the tests 2019-04-01 19:55:40 +01:00
sel.go use consistent context.Context var names 2019-04-01 12:18:16 +01:00
target.go add TargetID to Target 2019-04-07 13:37:32 +02:00
util.go Generic code cleanup 2019-04-03 09:03:41 +02:00

About chromedp Build Status Coverage Status

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

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