好用的 Puppeteer 辅助工具 Puppeteer Recorder
Puppeteer
Puppeteer 是一个Node库,它提供了一个高级API来控制DevTools协议上的Chrome或Chromium,常用于爬虫、自动化测试等,你在浏览器手动完成的大多数事情都可以使用它来完成。
站内有很多文章介绍Puppeteer,此处就不再介绍。
但是
但是无论是爬虫还是自动化测试,你要写Puppeteer脚本,首先你得分析网页,并且讲道理,每个网站还都不一样,这就很尴尬。
Puppeteer Recorder
Puppeteer Recorder 是Chrome扩展程序,可记录你的浏览器交互并生成Puppeteer脚本。
下图是以segmentfault点击排行榜上用户加关注为栗子录制的脚本。看上去是不是很有规律,写入cookie再改成for循环,一个自动加关注的脚本就完成了。
注意事项
目前这个项目还比较简单,通过分析几种event生成代码,这样还是会有比较多的问题。
比如,最后得到selector和点击前的selector不一致。selector是js脚本动态生成,需要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 ''
  }
参考
来源:https://segmentfault.com/a/1190000016073329
好用的 Puppeteer 辅助工具 Puppeteer Recorder的更多相关文章
- 分享一个LiteDB做的简单考试系统辅助工具
		
凌晨,被安排在公司值班,因为台风“灿鸿”即将登陆,风力太大,办公楼,车间等重要部分需要关注.所以无聊,那就分享一下,今天给朋友临时做的一个小的考试系统辅助工具吧.其实非常小,需求也很简单,但是可以根据 ...
 - 对"QQGame-大家来找茬"的辅助工具的改进
		
[前言]最近在博客园首页上看到有“大家来找茬”这个游戏(此游戏为找出两个相近图片的不同点)外挂的相关帖子,所以这里我也翻看了我之前(2009年5月)的写的一个简单的辅助程序(采用 VC6 开发的).我 ...
 - 类型转换辅助工具类TypeCaseHelper
		
package org.sakaiproject.util; import java.math.BigDecimal; import java.sql.Date; import java.sql.Ti ...
 - 又一款linux提权辅助工具
		
又一款linux提权辅助工具 – Linux_Exploit_Suggester 2013-09-06 10:34 1455人阅读 评论(0) 收藏 举报 https://github.com/Pen ...
 - [转]VS2010几款超赞的扩展辅助工具总结
		
前言 前两天刚把公司电脑系统和开发环境的重新安装http://www.cnblogs.com/aehyok/p/3603149.html, 主要是由于公司电脑配置稍微低了一些,运行.调试太慢,又因为要 ...
 - 三个有用的SQL辅助工具
		
三个有用的SQL辅助工具 编写人:CC阿爸 2015-1-23 工欲善其事必先利其器,今天在这里,我想与大家一起分享三个有用的SQL辅助工具.有兴趣的同学,可以一同探讨与学习一下,否则就略过吧. 相信 ...
 - linux下gitflow辅助工具安装和使用
		
gitflow是一个确保nvie推荐的git branch分支策略最佳模型得到有效实施的辅助工具.它作为git的一个子命令而存在. http://nvie.com/posts/a-successful ...
 - C++的辅助工具介绍 [转]
		
C++的辅助工具介绍 1 文档类 (1) Doxygen 参考站点:http://www.doxygen.org Doxygen是一种适合C风格语言(如C++.C.IDL.Java甚至包括C#和 ...
 - 【好玩的应用】QQ连连看辅助工具
		
自己学了这么久的C语言,但没有写出过什么可以用的东西来,总觉得心里不爽.这几天实在是不想干正事,在网上瞎逛逛,结果发现有人写了连连看的外挂.顿时觉得这很有意思啊.于是把代码下载下来,捣鼓了捣鼓.发现还 ...
 
随机推荐
- lines
			
lines Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
 - (转)python selenium-webdriver 元素操作之鼠标和键盘事件
			
参考资料:https://blog.csdn.net/zh175578809/article/details/76767748 参考资料2:https://blog.csdn.net/qq_41817 ...
 - mysql修改数据表某列的配置
			
alter table 表名 modify column 字段名 类型;alter table 表名 drop column 字段名
 - 一、基础篇--1.1Java基础-String、StringBuilder、StringBuffer
			
String.StringBuilder.StringBuffer 主要区别在两点上: 速度效率上对比:StringBuilder>StringBuffer>String 线程安全上来说: ...
 - Git-Runoob:Git 创建仓库
			
ylbtech-Git-Runoob:Git 创建仓库 1.返回顶部 1. Git 创建仓库 本章节我们将为大家介绍如何创建一个 Git 仓库. 你可以使用一个已经存在的目录作为Git仓库. git ...
 - 【flask-Email】邮件发送
			
使用依赖: flask_mail 安装方式: pip3 install flask-mail 代码示例: from flask import Flask from flask_mail import ...
 - RocketMQ 消费者
			
本文分析 DefaultMQPushConsumer,异步发送消息,多线程消费的情形. DefaultMQPushConsumerImpl MQClientInstance 一个客户端进程只有一个 M ...
 - vue-loader分析
			
分析一下Vue2.0中的vue-loader是如何处理.vue单文件组件的: 1.vueLoaderplugin 作用是 找到.vue,.vue.html的rules然后在他们的rule里添加 pit ...
 - js监听当前页面再次加载
			
document.addEventListener("visibilitychange", function () { if (!document.hidden) { //处于当前 ...
 - springmvc 获取request response
			
RequestContextHolder 获取request public HttpServletRequest getRequest() { return ((ServletRequestAttri ...