来源:未知 时间:2023-04-26 17:26 作者:小飞侠 阅读:次
[导读] go包chromedp所有中文api和实列说明 chromedp是一个用于控制谷歌浏览器(Chrome或Chromium)的Go语言包。以下是其所有中文API及其示例说明: AllocCtx: 分配一个新的Chrome上下文。该函数返回一...
go包chromedp所有中文api和实列说明 chromedp是一个用于控制谷歌浏览器(Chrome或Chromium)的Go语言包。以下是其所有中文API及其示例说明: 初入尝试AllocCtx:上下文分配一个新的Chrome上下文。该函数返回一个context.Context对象和一个chromedp.Context对象,后者可以用于控制浏览器。 示例代码: ctx, cancel := chromedp.NewContext(context.Background()) defer cancel() ListenTarget:目标事件监听来自Chrome的调试目标事件。该函数返回一个chan *cdp.TargetInfo类型的通道,每当检测到新的调试目标时,通道就会收到TargetInfo结构体的实例。 示例代码: ctx, cancel := chromedp.NewContext(context.Background()) defer cancel() targetChan := chromedp.ListenTarget(ctx, func(ev interface{}) { switch ev.(type) { case *cdp.EventTargetCreated: targetCreated := ev.(*cdp.EventTargetCreated) fmt.Printf("New target created: %v\n", targetCreated.TargetInfo.URL) } }) defer chromedp.StopListenTarget(ctx, targetChan) Run:执行在给定的Chrome上下文中运行一系列操作。该函数接受一个chromedp.Context对象、一组选项和要执行的操作,其中每个操作都是一个chromedp.Action类型的函数。 示例代码: ctx, cancel := chromedp.NewContext(context.Background()) defer cancel() var pageTitle string err := chromedp.Run(ctx, chromedp.Navigate("https://www.google.com/"), chromedp.Title(&pageTitle), ) if err != nil { log.Fatal(err) } fmt.Printf("Page title: %s\n", pageTitle) NewAllocator:分配器创建一个Chrome实例分配器。这个函数可以传入一些选项,比如Chrome二进制路径、调试端口等。 示例代码: allocator, err := chromedp.NewAllocator(context.Background()) if err != nil { log.Fatal(err) } defer allocator.CancelAll() ctx, cancel := allocator.Allocate(context.Background()) defer cancel() var pageTitle string err = chromedp.Run(ctx, chromedp.Navigate("https://www.google.com/"), chromedp.Title(&pageTitle), ) if err != nil { log.Fatal(err) } fmt.Printf("Page title: %s\n", pageTitle) Navigate:导航导航到指定的URL。该函数接受一个字符串类型的URL参数。 示例代码: err := chromedp.Run(ctx, chromedp.Navigate("https://www.google.com/"), ) if err != nil { log.Fatal(err) } Click:点击事件模拟单击指定元素。该函数接受一个选择器字符串作为参数,用于定位要点击的元素。 示例代码: err := chromedp.Run(ctx, chromedp.Click("#my-button"), ) if err != nil { log.Fatal(err) } WaitVisible:等待可见元素等待指定元素可见。该函数接受一个选择器字符串作为参数,用于定位要等待的元素。 示例代码: err := chromedp.Run(ctx, chromedp.WaitVisible("#my-element"), ) if err != nil { log.Fatal(err) } WaitNotVisible:等待不可见元素等待指定元素不可见。该函数接受一个选择器字符串作为参数,用于定位要等待的元素。 示例代码: err := chromedp.Run(ctx, chromedp.WaitNotVisible("#my-element"), ) if err != nil { log.Fatal(err) } SetValue:设置元素值将值设置给指定元素。该函数接受两个参数:一个选择器字符串,用于定位要设置的元素,和一个字符串类型的值。 示例代码: err := chromedp.Run(ctx, chromedp.SetValue("#my-input", "hello world"), ) if err != nil { log.Fatal(err) } 屏幕截图chromedp中屏幕截图主要用到screenshot.go里面方法,主要参数如下 chromedp.Screenshot//屏幕截图是一个元素查询操作,用于获取第一个元素的屏幕截图 //与选择器匹配的节点。 // //它的作用应该与Chrome中的“捕获节点屏幕截图”命令相同。 // //行为说明:协议监视器显示命令发送以下内容 //CDP命令也是: //-仿真.clearDeviceMetricsOverride //-Network.setUserAgentOverride with{“userAgent”:“”} //-Overlay.setShowViewportSize用{“show”:false}重新调整大小 // //这些CDP命令不是由chromedp发送的。如果它没有如预期那样工作, //您可以尝试自己发送这些命令。 // //请参阅[CaptureScreenshot]以获取浏览器视口的屏幕截图。 // //请参阅[屏幕截图]以获取整个页面的屏幕截图示例。 // // [screenshot]: https://github.com/chromedp/examples/tree/master/screenshot func Screenshot(sel interface{}, picbuf *[]byte, opts ...QueryOption) QueryAction chromedp.CaptureScreenshot//CaptureScreenshot是一个捕捉/截取 //当前浏览器视口。 // //它的作用应该与中的命令“捕获屏幕截图”相同 //铬。有关更多信息,请参阅屏幕截图的行为说明。 // //请参阅[Screenshot]操作以获取特定元素的屏幕截图。 // //请参阅[屏幕截图]以获取整个页面的屏幕截图示例。 // // [screenshot]: https://github.com/chromedp/examples/tree/master/screenshot func CaptureScreenshot(res *[]byte) Action { chromedp.FullScreenshot//FullScreenshot使用指定的图像质量拍摄完整的屏幕截图 //整个浏览器视口。 // //它的作用应该与命令“捕获全尺寸屏幕截图”相同 //铬合金。有关更多信息,请参阅屏幕截图的行为说明。 // //压缩质量的有效范围为[0..100]。当此值为 //100,图像格式为png;否则,图像格式为jpeg。 func FullScreenshot(res *[]byte, quality int) EmulateAction { 选择器:Query选择器类似前端jQuery,主要用到了query.go下的相关方法,上面初入里面已经列举出实例,下面将列举常用的。 chromedp.NodeIDs//NodeID是一个元素查询操作,用于检索与 //选择器。 func NodeID(sel接口{},ids*[]cdp.NodeID,opts…QueryOption) var nodeIDs []cdp.NodeID if err := Run(ctx, NodeIDs("#input2", &nodeIDs, ByID)); err != nil { t.Fatalf("got error: %v", err) } if len(nodeIDs) != 1 { t.Errorf("expected to have exactly 1 node id: got %d", len(nodeIDs)) } var value string if err := Run(ctx, WaitReady("#input2", ByID), Value(nodeIDs, &value, ByNodeID), ); err != nil { t.Fatalf("got error: %v", err) } chromedp.AttributeValue//AttributeValue是检索元素属性值的元素查询操作 //用于匹配选择器的第一元素节点。 func AttributeValue(sel interface{}, name string, value *string, ok *bool, opts ...QueryOption) QueryAction { chromedp.SetAttributeValue//SetAttributeValue是一个元素查询操作,它将元素属性设置为 //name到与选择器匹配的第一个元素节点的值。 func SetAttributeValue(sel interface{}, name, value string, opts ...QueryOption) QueryAction { chromedp.Text//Text是一个元素查询操作,用于检索第一个元素的可见文本 //与选择器匹配的节点。 func Text(sel interface{}, text *string, opts ...QueryOption) QueryAction { chromedp.TextContent//TextContent是一个元素查询操作,用于检索第一个元素的文本内容 //与选择器匹配的节点。 func TextContent(sel interface{}, text *string, opts ...QueryOption) QueryAction { 罗列一堆Click //单击是一个元素查询操作,它将鼠标单击事件发送到第一个元素 //与选择器匹配的节点。 func Click(sel interface{}, opts ...QueryOption) QueryAction { DoubleClick //双击是一个元素查询操作,它将鼠标双击事件发送到 //与选择器匹配的第一元素节点。 func DoubleClick(sel interface{}, opts ...QueryOption) QueryAction { //SetUploadFiles是一个元素查询操作,用于设置要上传的文件(即 //input[type=“file”]节点),用于匹配选择器的第一个元素节点。 func SetUploadFiles(sel interface{}, files []string, opts ...QueryOption) QueryAction { //SetUploadFiles是一个元素查询操作,用于设置要上传的文件(即 //input[type=“file”]节点),用于匹配选择器的第一个元素节点。 func SetUploadFiles(sel interface{}, files []string, opts ...QueryOption) QueryAction { //Reset是一个元素查询操作,用于重置第一个元素的父窗体 //与选择器匹配的节点。 func Reset(sel interface{}, opts ...QueryOption) QueryAction { //ComputedStyle是一个元素查询操作,用于检索 //与选择器匹配的第一元素节点。 func ComputedStyle(sel interface{}, style *[]*css.ComputedStyleProperty, opts ...QueryOption) QueryAction { //ComputedStyle是一个元素查询操作,用于检索 //与选择器匹配的第一元素节点。 func ComputedStyle(sel interface{}, style *[]*css.ComputedStyleProperty, opts ...QueryOption) QueryAction { //ScrollIntoView是一个元素查询操作,用于将窗口滚动到 //与选择器匹配的第一元素节点。 func ScrollIntoView(sel interface{}, opts ...QueryOption) QueryAction { 导航主要用到了 nav.go //NavigateAction是始终触发页面导航、等待的操作 //以便加载页面。 // //请注意,这些操作不会收集HTTP响应信息;为此, //请参阅[运行响应]。 //导航是对当前帧进行导航的操作。 func Navigate(urlstr string) NavigateAction {//NavigationEntries是一个检索页面导航历史记录的操作 //条目。 func NavigationEntries(currentIndex *int64, entries *[]*page.NavigationEntry) Action {//NavigateToHistoryEntry是导航到指定导航的操作 //输入。 func NavigateToHistoryEntry(entryID int64) NavigateAction {//NavigateBack是一个在 //历史。 func NavigateBack() NavigateAction {//NavigateForward是在中向前导航当前帧的操作 //它的历史。 func NavigateForward() NavigateAction {//重新加载是重新加载当前页面的操作。 func Reload() NavigateAction {//停止是一个停止所有导航和挂起的资源检索的操作。 func Stop() Action {//位置是检索文档位置的操作。 func Location(urlstr *string) Action {//标题是检索文档标题的操作。 func Title(title *string) Action {util工具集合站长犯懒了哈,贴图了: forcelP func(ctx context.Context, urlstr string) (string, error) resolveHost func(ctx context.Context, host string) (string, error) modifyURL func(ctx context.Context, urlstr string) (string, error) runListeners func (list []cancelableListener, ev interface(}) []cancelableListener frameOp func(*cdp.Frame) frameAttached func(id cdp.FramelD) frameOp frameDetached func(f *cdp.Frame) frameStartedLoading func(f *cdp.Frame) frameStoppedLoading func(f *cdp.Frame) setFrameState func(f *cdp.Frame, fs cdp.FrameState) clearFrameState func(f *cdp.Frame, fs cdp.FrameState) nodeOp func(*cdp.Node) walk func (m map[cdp.NodelD]*cdp.Node, n *cdp.Node) setChildNodes func (m map[cdp.NodelD]*cdp.Node, nodes []*cdp.Node) nodeOp attributeModified func(name, value string) nodeOp attributeRemoved func(name string) nodeOp inlineStylelnvalidated func(ids []cdp.NodelD) nodeOp characterDataModified func(characterData string) nodeOp childNodeCountUpdated func(count int64) nodeOp childNodelnserted func (m map[cdp.NodelD]*cdp.Node, prevID cdp.NodelD, c *cdp.Node) childNodeRemoved func (m map[cdp.NodelD]*cdp.Node, id cdp.NodelD) nodeOp shadowRootPushed func (m map[cdp.NodelD]*cdp.Node, c *cdp.Node) nodeOp shadowRootPopped func (m map[cdp.NodelD]*cdp.Node, id cdp.NodelD) nodeOp pseudoElementAdded func (m map[cdp.NodelD]*cdp.Node, c *cdp.Node) nodeOp pseudoElementRemoved func(m map[cdp.NodelD]*cdp.Node, id cdp.NodelD) nodeOp distributedNodesUpdated func(nodes []*cdp.BackendNode) nodeOp insertNode func(n []*cdp.Node, prevID cdp.NodelD, c *cdp.Node) []*cdp.Node removeNode func(n []*cdp.Node, id cdp.NodelD) []*cdp.Node isCouldNotComputeBoxModelError func(err error) bool 执行JS语句//Evaluate是一个用于评估JavaScript表达式的操作,用于解组 //对res.的脚本评估结果。 // //当res为nil时,脚本结果将被忽略。 // //当res是*[]字节时,脚本的原始JSON编码值 //结果将放在res。 // //当res是**运行时.RemoteObject时,res将被设置为低级别 //协议类型,并且不会尝试转换结果。 //原始对象可以保留在内存中,直到页面 //导航或关闭`runtime.ReleaseObject`或`runtime.RelaseObjectGroup` //可以用来要求浏览器释放原始对象。 // //对于所有其他情况,脚本的结果将“按值”返回(即。, //JSON编码),随后将对JSON进行尝试。Unmarshal //脚本结果为res.当脚本结果为“undefined”或“null”时, //并且res所指向的值不能为零(只有chan的值, //func、interface、map、pointer或slice可以为nil),返回[ErJSUndefined] //或[ErJSNull]。 Evaluate parseRemoteObject //EvaluateAsDevTools是一个将JavaScript表达式求值为 //Chrome DevTools会在“控制台”上下文中评估表达式, //并使脚本可以使用命令行API。 // //有关如何评估脚本表达式的详细信息,请参见[评估]。 // //注意:这不应该与不受信任的JavaScript一起使用。 EvaluateAsDevTools ://EvalObjectGroup是用于设置对象组的评估选项。 EvalObjectGroup //EvalWithCommandLineAPI是一个评估选项,用于生成DevTools命令 //行API可用于评估的脚本。 // //有关评估操作如何工作的更多信息,请参阅[评估]。 // //注意:这不应该与不受信任的JavaScript一起使用。 EvalWithCommandLineAPI //EvalIgnoreExceptions是一个评估选项,它将导致JavaScript //评估以忽略异常。 EvalIgnoreExceptions //EvalAsValue是一个评估选项,它将导致评估的JavaScript //表达式,将表达式的结果编码为JSON编码的值。 EvalAsValue 持续更新中... 以上就是go包chromedp所有中文api和实列说明全部内容,感谢大家支持自学php网。 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com