• puppeteer学习记录


    puppeteer是一款Chrome官方开发的node包,它提供了一组用来操纵 Chrome 的API,允许通过JS代码操纵 Chrome 浏览器,完成数据爬取、Web程序自动测试等任务,它实际上是通过调用Chrome DevTools开放的接口与Chrome通信。
    首先就是安装:npm i puppeteer,如果报错就采用cnpm试一下,
    安装成功后我们发现目录多了node_modules文件,那就稳妥了。

    一、保存页面截图

    然后写个demo试一下,新建test.js
    const devices = require('puppeteer/DeviceDescriptors');
    const puppeteer = require('puppeteer');
    
    (async () => {    const browser = await puppeteer.launch({        headless: true    });
        const page = await browser.newPage()
        await page.emulate(devices['iPhone X'])
        await page.goto('http://www.baidu.com')   
        await page.screenshot({ path: 'baidu.png'})
        await page.close()
    })()
    简单说明一下:

    devices是用来指定设备的,不指定的话就是默认800X600,在这里我们采用iPhoneX。
    goto就是要要访问的网址,我们采用baidu作为示例。
    screenshot就是截图需要的一些参数,有很多,我们只设置路径,一会就回保存到当前文件下面生成一个baidu.png。
    然后我们跑起来 node test
    稍等片刻发现,多了baidu.png

    二、自动操作表单

    const puppeteer = require('puppeteer');
    
    (async () => {    const browser = await puppeteer.launch({        headless: false    });
        const page = await browser.newPage()
        await page.goto('https://account.cnblogs.com/signin?returnUrl=https%3A%2F%2Fwww.cnblogs.com%2F')
        await page.waitFor(4000)
        await page.type("#LoginName", "账号"); //输入账号
        await page.type("#Password", "密码"); //输入密码
        await page.click("#submitBtn"); //点击登录按钮
    })()

    这里我们把headless设置为false,这样他就能自己打开游览器了,便于我们观察

    运行 node test

    可以看出按我们预期的完成了登陆。

    这个就是一个简单的demo,可以用来UI自动测试等等,它本身api及功能是非常强大的,可以移步puppeteer
    官方
    文档描述其主要有以下作用:
    • 生成页面 PDF。
    • 抓取 SPA(单页应用)并生成预渲染内容(即“SSR”(服务器端渲染))。
    • 自动提交表单,进行 UI 测试,键盘输入等。
    • 创建一个时时更新的自动化测试环境。 使用最新的 JavaScript 和浏览器功能直接在最新版本的Chrome中执行测试。
    • 捕获网站的 timeline trace,用来帮助分析性能问题。
    • 测试浏览器扩展。


  • 相关阅读:
    wav格式
    python字符串操作
    云中Active Directory是如何工作的?
    Azure Active Directory中的特权身份管理如何运作?
    工作组下的共享设置
    重新审视虚拟桌面存储
    NAND
    如何使用PowerShell管理Windows服务
    如何应对云爆发架构?四种方法替你解忧
    配置网络策略中的 NAP 条件
  • 原文地址:https://www.cnblogs.com/yuanzhiguo/p/11236822.html
Copyright © 2020-2023  润新知