github链接

About chromedp

chromedp包是一种更快、更简单的方式来驱动支持Chrome DevTools Protocol的浏览器,无需外部依赖(如Selenium或PhantomJS)。

Installing

Install in the usual Go way:

  1. go get -u github.com/chromedp/chromedp

Example

有关文档和示例,请参阅GoDoc页面。此外,示例存储库包含更复杂的示例。

Frequently Asked Questions

我看不到任何Chrome浏览器窗口?
默认情况下,Chrome在headless模式下运行。请参阅DefaultExecAllocatorOptions,以及一个覆盖默认选项的示例

我看到了“context cancelled”错误?
当与浏览器的连接丢失时,chromedp 取消上下文,且它可能导致错误。例如,如果手动关闭浏览器,或者如果浏览器进程被杀死或者以其他的方式终止,就会发生链接丢失的原因。

Chrome退出,只要我的Go程序完成?
在linux上,chromedp配置 通过强制杀死任何已经开始的Chrome子进程来避免资源泄漏。如果你需要启动一个长时间运行的chrome实例,手动开启chrome且链接正在使用的 RemoteAllocator。

在没有运行的情况下执行操作会导致“无效上下文”
默认情况下,chromedp上下文没有执行器,但是如果需要,可以手动指定执行器;参见问题#326中的示例。

我不能使用带有Run的操作,因为它返回许多值
用 ActionFunc 包装它:

  1. chromedp.Run(ctx, chromedp.ActionFunc(func(ctx context.Context) error {
  2. _, err := domain.SomeAction().Do(ctx)
  3. return err
  4. }))

我想在无头环境中使用chromedp
最简单的方法是在chromedp/headless-shell图像中运行使用chromedp的Go程序。该图像包含无头壳,一个更小的无头构建的Chrome, chromedp能够找到打开的盒子。