golang语言chromedp包介绍以及如何弹出浏览器进行调试

背景

想要做一个定时自动发送微博的程序,微博API提供了一个接口statuses/share,但是该接口需要注册微博开发者并审核通过(需要有app或者网站)微博应用审核产品指南。因此通过搜索引擎了解到可以通过程序控制chrome浏览器来实现,在GitHub上找到了chromedp这个包,但是相关文档比较少。这里把我了解和学习这个包,并实现自动化发送微博的过程记录并分享出来。

关于chromedp

GitHub地址:https://github.com/chromedp/chromedp

安装chromedp

go get -u github.com/chromedp/chromedp

使用例子

关于如何使用官方还有一个项目专门来写了几个例子来帮助大家入门,第一次接触可以先用官方的例子试一下。但是这里要注意官方的例子中使用的好多都是在国内被屏蔽的网站,地址:https://github.com/chromedp/examples

chrome普通模式与chrome headless模式的区别

普通模式

普通模式会在电脑上弹出浏览器窗口,可以在浏览器中看到代码执行的效果,调用完成之后需要关闭掉浏览器。

chrome headless模式

chrome headless模式不会弹出浏览器窗口,并且你多次go run main.go的时候, go 代码运行中断导致后台chrome headless不能退出,导致第二次本地调试失败, 此时解决方案就是自己手动结束chrome进程。
因此在调试go代码的时候不建议使用chrome headless模式。

如何使用chrome普通模式

chromedp包默认情况下使用chrome headless模式,所以需要在禁用该模式才会弹出你本地的chrome浏览器。

// Command click is a chromedp example demonstrating how to use a selector to
// click on an element.
package mainimport ("context""log""time""github.com/chromedp/chromedp"
)func main() {// 禁用chrome headlessopts := append(chromedp.DefaultExecAllocatorOptions[:],chromedp.Flag("headless", false),)allocCtx, cancel := chromedp.NewExecAllocator(context.Background(), opts...)defer cancel()// create chrome instancectx, cancel := chromedp.NewContext(allocCtx,chromedp.WithLogf(log.Printf),)defer cancel()// create a timeoutctx, cancel = context.WithTimeout(ctx, 15*time.Second)defer cancel()// navigate to a page, wait for an element, clickvar example stringerr := chromedp.Run(ctx,chromedp.Navigate(`https://golang.org/pkg/time/`),// wait for footer element is visible (ie, page is loaded)chromedp.WaitVisible(`body > footer`),// find and click "Expand All" linkchromedp.Click(`#pkg-examples > div`, chromedp.NodeVisible),// retrieve the value of the textareachromedp.Value(`#example_After .play .input textarea`, &example),)if err != nil {log.Fatal(err)}log.Printf("Go's time.After example:\n%s", example)
}

参考文章

  • go语言chromedp使用教程

golang语言chromedp包介绍以及如何弹出浏览器进行调试相关推荐

  1. go语言negroni包介绍

    go语言negroni包介绍 前言 go语言很好地支持了网络编程,go 语言与web 框架相关的包有很多,本文主要介绍go语言的negroni包. 前置参考博客:HTTP 协议 与 golang we ...

  2. r语言degseq2_R语言DESeq 包介绍 -

    R语言DESeq包介绍 分析RNA序列数据的一个主要任务是探测基因的差异表达,DESeq包提供了测试差异表达的方法,应用负二项分布和收缩的分布方程估计. 1. 包的安装 输入如下命令,DESeq和相关 ...

  3. Activity的用法(三):开启网页 (没有弹出浏览器,不清楚是什么原因)

    用这个例子,但是总是没有弹出浏览器,不清楚是什么原因 package com.example.activity_and_service;import android.app.Activity; imp ...

  4. 关于password导致input弹出浏览器记住密码弹框问题

    关于password导致input弹出浏览器记住密码弹框问题 问题描述 问题解决 代码实现 问题描述 当有input有password的输入框在的时候,其他input输入框可能会在获取光标的时候会弹出 ...

  5. python selenium 不弹出浏览器

    python selenium 不弹出浏览器 自动化测试弹出浏览器可以清晰的看到操作步骤,和执行页面,领导也喜欢看,并不适合所有场景,比如:自动sign...哇哈哈... 开发环境: python3. ...

  6. JAVA弹出浏览器窗口

    JAVA弹出浏览器窗口(方坤[url]www.whjava.com[/url]) /**弹出浏览器窗口***/@SuppressWarnings("unchecked")publi ...

  7. golang语言的包依赖管理方式 综述

    引言: 一.GOPATH简介: 二.GOPATH 模式 - go get 三.GO VENDOR 模式 go vender 之 dep 一· 优势: 二· 操作使用 三· 问题 四.Go Module ...

  8. wincc 关闭弹出窗口C语言,退出WINCC操作画面时弹出对话框要求输入用户名和密码-工业支持中心-西门子中国...

    1.最简单的就是给退出按钮设定一个权限号,比如99,该权限号需在用户管理器中预先设置好,并将该权限分配给特定的用户. 此方法无需编程,点击按钮时如用户无99号权限,则弹出无权操作对话框.当然因为简单所 ...

  9. swal如何加入html语言,前端基础(九):SweetAlert(弹出框)

    简介 SweetAlert是一款很好用的弹出框框架 下载 导入 博主用的是bootstrap-sweetalert,所以要依赖bootstrap,导入前先导入原生jQuery以及bootstrap 基 ...

  10. 035-JAVA语言实现下拉菜单与弹出菜单功能

    上一章:034-用Swing组件综合应用(实现QQ登录与注册界面功能)_CSDN专家-赖老师(软件之家)的博客-CSDN博客 下一讲:036-JList列表控件使用案例讲解_CSDN专家-赖老师(软件 ...

最新文章

  1. [转]MySQL修改时区的方法小结
  2. unity, monoDevelop ide 代码提示不起作用的解决方法
  3. profile之springboot
  4. Linux之nginx配置文件的分析整理
  5. python与用户交互、数据类型
  6. 省选模拟赛记录(越往下越新哦~~~)
  7. LeetCode 1704. 判断字符串的两半是否相似
  8. 7-172 一元多项式求导 (20 分)
  9. phonegap安装中的问题
  10. 数据结构(6)----栈与队列之栈的链式存储结构及其实现
  11. html小球与边框碰撞反弹,通过JS如何实现多个小球碰撞反弹
  12. h5+js实现本地文件读取和写入-web前端教程
  13. 动态效果html wow,bootstrap 动态效果WOW animate插件
  14. 那些年搞不懂的高深术语——依赖倒置•控制反转•依赖注入•面向接口编程
  15. 打印符号三角形问题java_回溯法之符号三角形问题
  16. 【木叶精品系统】木叶 GhostXP SP3 纯净版/装机版_2013.06
  17. 中小网站在域名、服务器等选择上的一点总结
  18. 关于在Linux下无法查看caj文档的解决方案
  19. Audio播放音频 --- 建立播放通道
  20. Builder设计模式构建NavigationBar

热门文章

  1. 2022-2028全球婚恋交友软件行业调研及趋势分析报告
  2. python -字典生成器
  3. Unity 关于Toggle的ison默认没有显示监听结果的解决
  4. 代码覆盖率、功能覆盖率分析
  5. 求不规则立方体表面积java_求立方体的体积、表面积(c++)
  6. 计算机英语单词练习五
  7. 赛福基因公开课第二节《神经系统遗传病基因检测简介》
  8. 华为系统和计算机,电脑手机合二为一 华为多屏协同让电脑与手机亲密互动
  9. Vue单页面应用性能优化实践
  10. php数据库输出文字怎么竖着的,关于文字竖排的详细介绍