Puppeteer

Puppeteer 是一个Node库,它提供了一个高级API来控制DevTools协议上的ChromeChromium,常用于爬虫、自动化测试等,你在浏览器手动完成的大多数事情都可以使用它来完成。

站内有很多文章介绍Puppeteer,此处就不再介绍。

但是

但是无论是爬虫还是自动化测试,你要写Puppeteer脚本,首先你得分析网页,并且讲道理,每个网站还都不一样,这就很尴尬。

Puppeteer Recorder

Puppeteer RecorderChrome扩展程序,可记录你的浏览器交互并生成Puppeteer脚本。

下图是以segmentfault点击排行榜上用户加关注为栗子录制的脚本。看上去是不是很有规律,写入cookie再改成for循环,一个自动加关注的脚本就完成了。

注意事项

目前这个项目还比较简单,通过分析几种event生成代码,这样还是会有比较多的问题。
比如,最后得到selector和点击前的selector不一致。selectorjs脚本动态生成,需要waitFor去等待等等。
这些问题本身也是开发前分析网页甚至debug需要遇到的问题,改成自动脚本仍需注意。

以下为部分源码


_parseEvents (events) {
console.debug(`generating code for ${events.length} events`)
let result = ''
for (let event of events) {
const { action, selector, value, href, keyCode } = event
switch (action) {
case 'keydown':
result += this._handleKeyDown(selector, value, keyCode)
break
case 'click':
result += this._handleClick(selector, href)
break
case 'goto*':
result += ` await page.goto('${href}')\n`
break
case 'reload':
result += ` await page.reload()\n`
break
}
}
return result
}
_handleKeyDown (selector, value, keyCode) {
if (keyCode === 9) return ` await page.type('${selector}', '${value}')\n`
return ''
}

参考

Puppeteer
Puppeteer Recorder

来源:https://segmentfault.com/a/1190000016073329

好用的 Puppeteer 辅助工具 Puppeteer Recorder的更多相关文章

  1. 分享一个LiteDB做的简单考试系统辅助工具

    凌晨,被安排在公司值班,因为台风“灿鸿”即将登陆,风力太大,办公楼,车间等重要部分需要关注.所以无聊,那就分享一下,今天给朋友临时做的一个小的考试系统辅助工具吧.其实非常小,需求也很简单,但是可以根据 ...

  2. 对"QQGame-大家来找茬"的辅助工具的改进

    [前言]最近在博客园首页上看到有“大家来找茬”这个游戏(此游戏为找出两个相近图片的不同点)外挂的相关帖子,所以这里我也翻看了我之前(2009年5月)的写的一个简单的辅助程序(采用 VC6 开发的).我 ...

  3. 类型转换辅助工具类TypeCaseHelper

    package org.sakaiproject.util; import java.math.BigDecimal; import java.sql.Date; import java.sql.Ti ...

  4. 又一款linux提权辅助工具

    又一款linux提权辅助工具 – Linux_Exploit_Suggester 2013-09-06 10:34 1455人阅读 评论(0) 收藏 举报 https://github.com/Pen ...

  5. [转]VS2010几款超赞的扩展辅助工具总结

    前言 前两天刚把公司电脑系统和开发环境的重新安装http://www.cnblogs.com/aehyok/p/3603149.html, 主要是由于公司电脑配置稍微低了一些,运行.调试太慢,又因为要 ...

  6. 三个有用的SQL辅助工具

    三个有用的SQL辅助工具 编写人:CC阿爸 2015-1-23 工欲善其事必先利其器,今天在这里,我想与大家一起分享三个有用的SQL辅助工具.有兴趣的同学,可以一同探讨与学习一下,否则就略过吧. 相信 ...

  7. linux下gitflow辅助工具安装和使用

    gitflow是一个确保nvie推荐的git branch分支策略最佳模型得到有效实施的辅助工具.它作为git的一个子命令而存在. http://nvie.com/posts/a-successful ...

  8. C++的辅助工具介绍 [转]

    C++的辅助工具介绍 1 文档类  (1) Doxygen  参考站点:http://www.doxygen.org  Doxygen是一种适合C风格语言(如C++.C.IDL.Java甚至包括C#和 ...

  9. 【好玩的应用】QQ连连看辅助工具

    自己学了这么久的C语言,但没有写出过什么可以用的东西来,总觉得心里不爽.这几天实在是不想干正事,在网上瞎逛逛,结果发现有人写了连连看的外挂.顿时觉得这很有意思啊.于是把代码下载下来,捣鼓了捣鼓.发现还 ...

随机推荐

  1. html button标签 语法

    html button标签 语法 button标签怎么用? 作用:定义一个按钮. 语法:<button type="button">按钮</button> ...

  2. 使用 XSLT 显示 XML

    通过使用 XSLT,您可以向 XML 文档添加显示信息. 使用 XSLT 显示 XML XSLT 是首选的 XML 样式表语言. XSLT (eXtensible Stylesheet Languag ...

  3. Vue(核心思想)

    1.Es6语法普及 let和var的区别: var:定义变量时,在全局范围内都有效;所以在变量没有声明之前就能使用,值为undefined, 称为变量提升; let:声明的变量一定要在声明后使用,而且 ...

  4. 命令行创建 vue 项目(仅用于 Vue 2.x 版本)

    1 .安装 Node.js 和 npm ( 验证安装成功输入下图 1 命令行可得 2:输入命令行 3 可得 4 即安装成功) 2.安装全局 webpack (安装依照下图输入命令行 1 耐心等待至到出 ...

  5. windows 全局安装 express 但无法命令行执行

    从 express 的官网直接按照命令行全局安装 express 后, express 命令无法执行, 在 cmd 中显示 该命令行无法识别.基本可判断是 环境变量配置 这边没有搞定. 1. 卸载 n ...

  6. pyinstaller打包的exe太大?你需要嵌入式python玄学 探索篇

    上篇我们讲到pip的安装以及普通库用pip的安装方法 CodingDog:pyinstaller打包的exe太大?你需要嵌入式python玄学 拓展篇​zhuanlan.zhihu.com 问题纷沓而 ...

  7. Springboot 构建http服务,返回的http行是'HTTP/1.1 200' 无状态码描述 客户端解析错误

    ————————————————————————————————————————— *** 响应的数据格式  HTTP/1.1 200 OK  Server: Apache-Coyote/1.1  A ...

  8. 同一个tomcat部署多个项目

    在开发项目中,有时候我们需要在同一个tomcat中部署多个项目,小编之前也是遇到了这样的情况,碰过不少的壁,故整理总结如下,以供大家参考.(以Linux为例,其他系统同样适用) 一.首先将需要部署的项 ...

  9. EasyUI combobox下拉框添加水平滚动条和垂直滚动条

    在EasyUI中combobox组件设置滚动条: 1.垂直滚动条:设置panelHeight属性,默认200,组件的数据过多滚动条自动出现,设置auto,则不出现滚动条. 2.水平滚动条:水平滚动条在 ...

  10. javascript二叉树

    javascript中的二叉树一(binary tree) 毕业也快2年了,毕业之后就没有认真写过博客了,都是那里学习一下,这里弄一下.学习了也不做笔记,过后就忘记了.我对这种状态打从心里是讨厌的. ...