好用的 Puppeteer 辅助工具 Puppeteer Recorder

Puppeteer

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

站内有许多文章引见Puppeteer,此处就不再引见。

然则

然则无论是爬虫照样自动化测试,你要写Puppeteer剧本,起首你得剖析网页,而且讲道理,每一个网站还都不一样,这就很为难。

Puppeteer Recorder

Puppeteer RecorderChrome扩大顺序,可纪录你的浏览器交互并天生Puppeteer剧本。

下图是以segmentfault点击排行榜上用户加关注为栗子录制的剧本。看上去是否是很有规律,写入cookie再改成for轮回,一个自动加关注的剧本就完成了。
《好用的 Puppeteer 辅助工具 Puppeteer Recorder》

注重事项

现在这个项目还比较简单,经由过程剖析几种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
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞