About chromedp
chromedp包是一种更快、更简单的方式来驱动支持Chrome DevTools Protocol的浏览器,无需外部依赖(如Selenium或PhantomJS)。
Installing
Install in the usual Go way:
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 包装它:
chromedp.Run(ctx, chromedp.ActionFunc(func(ctx context.Context) error {
_, err := domain.SomeAction().Do(ctx)
return err
}))
我想在无头环境中使用chromedp
最简单的方法是在chromedp/headless-shell图像中运行使用chromedp的Go程序。该图像包含无头壳,一个更小的无头构建的Chrome, chromedp能够找到打开的盒子。