chromedp自动启动为headless模式
// Command click is a chromedp example demonstrating how to use a selector to
// click on an element.
package main import (
"context"
"fmt"
"github.com/chromedp/cdproto/page"
"github.com/chromedp/chromedp"
"github.com/chromedp/chromedp/runner"
"log"
"os"
"time"
) func main() {
var err error // create context
ctxt, cancel := context.WithCancel(context.Background())
defer cancel() // create chrome instance
//c, err := chromedp.New(ctxt, chromedp.WithLog(log.Printf))
//if err != nil {
// log.Fatal(err)
//} c, err := NewHeadless(ctxt, `https://xxx.xx`)
if err != nil {
log.Fatalf("new headless: %s",err)
} // run task list
err = c.Run(ctxt, click())
if err != nil {
log.Fatalf("task err: %s",err)
} // shutdown chrome
err = c.Shutdown(ctxt)
if err != nil {
log.Fatalf("shutdown err: %s",err)
} // wait for chrome to finish
err = c.Wait()
if err != nil {
log.Fatalf("wait err: %s",err)
}
} func click() chromedp.Tasks {
//url := `https://free-ss.site`
//sect := "div.main > div > table > tbody >tr:nth-child(2) > td:nth-child(9) > a"
sect := `//a[@href="v/443.json"]`
wd,_ := os.Getwd()
fmt.Println(wd)
return chromedp.Tasks{
//chromedp.Navigate(url),
chromedp.WaitVisible(sect),
page.SetDownloadBehavior(page.SetDownloadBehaviorBehaviorAllow).WithDownloadPath(wd),
chromedp.Click(sect, chromedp.NodeVisible),
chromedp.Sleep( * time.Second),
}
} // NewHeadless 创建headless chrome实例
func NewHeadless(ctx context.Context, starturl string) (*chromedp.CDP, error) {
// runner.Flag设置启动headless chrome时的命令行参数
// Windows用户需要设置runner.Flag("disable-gpu", true),具体信息参见文档的FAQ
run, err := runner.New(runner.Flag("headless", false),runner.StartURL(starturl)) if err != nil {
return nil, err
} // run.Start启动实例
err = run.Start(ctx)
if err != nil {
return nil, err
} // 默认情况chromedp会输出大量log,因为是示例所以选择屏蔽,dropChromeLogs为自定义函数,形式为func(string, ...interface{}){}
// 使用runner初始化chromedp实例
// 实例在使用完毕后需要调用c.Shutdown()来释放资源
//c, err := chromedp.New(ctx, chromedp.WithRunner(run), chromedp.WithErrorf(dropChromeLogs))
c, err := chromedp.New(ctx, chromedp.WithRunner(run), chromedp.WithLog(log.Printf))
if err != nil {
return nil, err
} return c, nil
}
chromedp自动启动为headless模式的更多相关文章
- 通过Headless模式执行selenium脚本
我们在通过Selenium运行自动化测试时,必须要启动浏览器,浏览器的启动与关闭必然会影响执行效率,而且还会干扰你做其它事情(本机运行的话) Chrome Headless模式 Python Sele ...
- java.awt.headless 模式
1. 什么是 java.awt.headless? Headless模式是系统的一种配置模式.在系统可能缺少显示设备.键盘或鼠标这些外设的情况下可以使用该模式. 2. 何时使用和headless mo ...
- Rendertron:谷歌 Chrome 新的 headless 模式又贡献了一个新的技巧
摘自:https://zhuanlan.zhihu.com/p/31670033 Rendertron:JavaScript Web 富应用的一个老问题是如何使这些页面的动态渲染部分可供搜索引擎检索. ...
- 技能树升级——Chrome Headless模式 - 全栈客栈 - SegmentFault
技能树升级--Chrome Headless模式 - 全栈客栈 - SegmentFault TNPM
- Chrome Headless模式
在 Chrome 59 版本开始已经开始支持了 Headless 模式,也就是无界面模式,这样爬取的时候就不会弹出浏览器了,如果要使用此模式请把 Chrome 升级到 59 版本及以上,启用 Head ...
- 关于jvm系统属性-Djava.awt.headless 模式
1. 什么是 java.awt.headless? Headless模式是系统的一种配置模式.在系统可能缺少显示设备.键盘或鼠标这些外设的情况下可以使用该模式. 2. 何时使用和headless mo ...
- Chrome headless 模式
我们在通过Selenium运行自动化测试时,必须要启动浏览器,浏览器的启动与关闭必然会影响执行效率,而且还会干扰你做其它事情(本机运行的话). 那能不能把自动化测试的运行放在后台?当然可以! html ...
- selenium自动化浏览器后台运行headless模式
通过selenium做WEB自动化的时候,必须要启动浏览器, 浏览器的启动与关闭会影响执行效率. 当我们在自己电脑运行代码时,还会影响做别的事情. 鉴于这种情况,Google针对Chrome浏览器新增 ...
- 【转】Chrome headless 模式
原文地址: http://www.cnblogs.com/fnng/p/7797839.html 我们在通过Selenium运行自动化测试时,必须要启动浏览器,浏览器的启动与关闭必然会影响执行效率,而 ...
随机推荐
- 关于pycharm使用sqlite数据可视化的使用
如图
- Spring配置问题:The prefix "util" for element "util:map" is not bound.
在spring的头部文件中没有引入: xmlns:util=”http://www.springframework.org/schema/util” 原文:https://blog.csdn.net/ ...
- Jupyter 环境配置
1. 找到python文件目录, 用管理员身份打开powershell python -m pip install jupyter 2. Jupyter notebook
- oracle数据库代码块
--申明变量.游标 declare a ):'; --逻辑 begin INSERT into TEMP_DSF.TEST VALUES (a); end; tips:mysql不支持匿名块.仅在存储 ...
- 解决“<form>提交,CSRF验证失败。请求中止”
在相应的提交页面,内,添加"{%csrf_token%} ",如: Django工程的app文件的views.py添加屏蔽装饰器,(相应的函数上): from django.vie ...
- Sublime Text格式化HTML JS CSS代码
Sublime Text是开发Hybrid应用的神器,但是有时候对糟糕的代码格式很懊恼,尤其是团队成员比较多,并且代码风格不是很统一的时候.幸好有可用的格式化插件,比较好用的就是HTML-CSS-JS ...
- 04-cglib(code generator library)代理(没有接口)
1 UserServiceProxyFactory4代码 package www.test.c_proxy; import java.lang.reflect.Method; import org.s ...
- 分布式数据库sort那些事儿
待填. 收回之前的填坑时间. 计划永远没有变化快,所有周末都奉献上还是有干不完的活,待闲时再来填..
- shell 重定向 1> 2> &>
0表示标准输入1表示标准输出2表示标准错误输出> 默认为标准输出重定向,与 1> 相同2>&1 意思是把 标准错误输出 重定向到 标准输出.&>file 意思是 ...
- Linux 启动盘命令
linux下有很多工具可以制作启动盘, 例如 unetbootin 和 wubi, 不过我们可以使用linux下的一条命令来完成-----dd 操作方法: 1 卸载你的U盘 假设你的u盘对应的设备是s ...