如何成为Puppeteer大师

对程序进行测试有很多方法。从微型的单元测试开始,到更大型的用户界面测试Puppeteer绝对属于后一种。

\\

Puppeteer宣传自己是

\\
\

一个Node库,它提供了一组高级API,通过DevTools协议控制无界面Chrome。

\
\\

简而言之,基于Chrome Devtools协议,Puppeteer可以让用户界面测试变得很轻松。而所有这一切都是免费的。

\\

什么是Puppeteer?

\\

Puppeteer是一个用户界面自动化工具。它通过使用Chrome无界面模式和DevTools协议的组合来实现这一点。正如上面的引用所言,它使用一个更上层的API来封装其功能,让用户界面测试自动化变得轻而易举。

\\

人们基于Chrome DevTools协议开发了一系列Google Chrome工具。你在浏览器中点击更多工具 -\u0026gt;开发工具,打开的就是DevTools。DevTools协议是DevTools的动力基础,我们现在可以使用Chrome中的DevTools来做更多的事情。

\\

无界面Chrome是没有Chrome的Chrome。是的,你没看错。它允许你从浏览器之外的环境(即命令行)与Chromium进行交互。

\\

将Chromium和Blink渲染引擎带入命令行使得很多事情变得可行,比如自动化测试。

\\

安装

\\

安装很简单,可以通过yarnnpm来完成。只需运行下面的命令:

\\
\yarn add pupeeter\# or \"npm i puppeteer\"\
\\

之后可以像其它nodejs程序一样用node来运行。

\\

创建截图

\\

有时你想测试像CSS这样的东西,确保网站观感没有出现回退。

\\

譬如,对我的博客首页进行截图:

\\
\const puppeteer = require(\"puppeteer\");\(async() =\u0026gt; {\    const browser = await puppeteer.launch();\    const page = await browser.newPage();\    await page.goto(\"http://jackhiston.com/\");\    await page.screenshot({ path: \"jackhiston-blog.png\" });\    browser.close();\})();\
\\

首先我们要引用puppeteer作为依赖包。有了这个,你可以启动一个浏览器实例,它实际上也可以在屏幕上加载浏览器,如下所示:

\\
\const browser = await puppeteer.launch({ headless: false });
\\

注意headless选项。

\\

这样你就可以在浏览页面时创建一个全新的页面,然后你可以“转到”一个特定的网址(在这个例子里会转到我的主页)。

\\

然后,我们可以使用内建的屏幕截图功能来保存页面截图。

\\

爬取网页

\\

另外一个应用场景是用Puppeteer爬取网站的内容。在下面的例子里,我将浏览骇客新闻并从第一页上取得所有新闻的链接:

\\
\const puppeteer = require(\"puppeteer\");\(async() =\u0026gt; {\    const browser = await puppeteer.launch();\    const page = await browser.newPage();\    page.on(\"console\
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值