// 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模式的更多相关文章

  1. 通过Headless模式执行selenium脚本

    我们在通过Selenium运行自动化测试时,必须要启动浏览器,浏览器的启动与关闭必然会影响执行效率,而且还会干扰你做其它事情(本机运行的话) Chrome Headless模式 Python Sele ...

  2. java.awt.headless 模式

    1. 什么是 java.awt.headless? Headless模式是系统的一种配置模式.在系统可能缺少显示设备.键盘或鼠标这些外设的情况下可以使用该模式. 2. 何时使用和headless mo ...

  3. Rendertron:谷歌 Chrome 新的 headless 模式又贡献了一个新的技巧

    摘自:https://zhuanlan.zhihu.com/p/31670033 Rendertron:JavaScript Web 富应用的一个老问题是如何使这些页面的动态渲染部分可供搜索引擎检索. ...

  4. 技能树升级——Chrome Headless模式 - 全栈客栈 - SegmentFault

    技能树升级--Chrome Headless模式 - 全栈客栈 - SegmentFault TNPM

  5. Chrome Headless模式

    在 Chrome 59 版本开始已经开始支持了 Headless 模式,也就是无界面模式,这样爬取的时候就不会弹出浏览器了,如果要使用此模式请把 Chrome 升级到 59 版本及以上,启用 Head ...

  6. 关于jvm系统属性-Djava.awt.headless 模式

    1. 什么是 java.awt.headless? Headless模式是系统的一种配置模式.在系统可能缺少显示设备.键盘或鼠标这些外设的情况下可以使用该模式. 2. 何时使用和headless mo ...

  7. Chrome headless 模式

    我们在通过Selenium运行自动化测试时,必须要启动浏览器,浏览器的启动与关闭必然会影响执行效率,而且还会干扰你做其它事情(本机运行的话). 那能不能把自动化测试的运行放在后台?当然可以! html ...

  8. selenium自动化浏览器后台运行headless模式

    通过selenium做WEB自动化的时候,必须要启动浏览器, 浏览器的启动与关闭会影响执行效率. 当我们在自己电脑运行代码时,还会影响做别的事情. 鉴于这种情况,Google针对Chrome浏览器新增 ...

  9. 【转】Chrome headless 模式

    原文地址: http://www.cnblogs.com/fnng/p/7797839.html 我们在通过Selenium运行自动化测试时,必须要启动浏览器,浏览器的启动与关闭必然会影响执行效率,而 ...

随机推荐

  1. 10-排序6 Sort with Swap(0, i) (25 分)

    Given any permutation of the numbers {0, 1, 2,..., N−1}, it is easy to sort them in increasing order ...

  2. DJ

    必知必会13条 all():查询所有结果 filter(**kwargs)   过滤,取到符合条件的对象,比get方法好,找不到会返回空 get(**kwargs)      取到符合条件对象,对象有 ...

  3. UntraEdit 语法高亮 (MSSQL)

    http://www.ultraedit.com/downloads/extras/wordfiles.html 这里有ue 支持的语言的uew文件. 需要把下载的语法文件放到: %APPDATA%\ ...

  4. my30_表碎片整理

    确认表的类型与存储引擎,是否全部是innodb select TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE,ENGINE,VERSION,ROW_FORMAT,TABLE_RO ...

  5. my27_OGG MySQL To MySQL错误汇总

    OGG-00446 2019-02-12T14:57:57.668+0800 ERROR OGG-00446 Oracle GoldenGate Delivery for MySQL, r1.prm: ...

  6. 一些不常见的css知识

    margin-top:20%  ----------------20% 是宽度的20%

  7. 信息领域热词分析系统--python过滤

    利用python过滤去没用的词语,过滤的词语存储在停用文件中. #创建停用词表 def stopwordlist(): stopwords=[line.strip() for line in open ...

  8. my.助战选择

    ZC:我的选项:铁扇.小白龙.北海龙女.北海龙子(涌浪).老鼠精(避敌锋芒).惠岸.银角 ZC:我的选择(日常速推不是我急需的,慢一点无所谓,我需要过难度):老鼠精(避敌锋芒).银角(首回合隐身,每回 ...

  9. django DRF 图片路径问题

    问题描述:为什么DRF中有时候返回的json中图片是带域名的,有时候是不带域名的呢?(难受啊马飞~) 解答:带域名的结果是在view中对模型类序列化的,DRF在序列化图片的时候 会检查上下文有没有re ...

  10. Spring Boot 实现ErrorController接口处理404、500等错误页面

    在项目中我们遇到404找不到的错误.或者500服务器错误都需要配置相应的页面给用户一个友好的提示,而在Spring Boot中我们需要如何设置. 我们需要实现ErrorController接口,重写h ...