




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第浅析Node.js中怎么使用Puppeteer库Puppeteer是谷歌官方出品的一个通过DevTools协议控制headlessChrome的Node库。可以通过Puppeteer的提供的api直接控制Chrome模拟大部分用户操作来进行UITest或者作为爬虫访问页面来收集数据。
中文文档
https://zhaoqize.github.io/puppeteer-api-zh_CN/#/
作用:
能做什么
生成页面PDF。
抓取SPA(单页应用)并生成预渲染内容。
自动提交表单,进行UI测试,键盘输入等。
创建一个时时更新的自动化测试环境。使用最新的JavaScript和浏览器功能直接在最新版本的Chrome中执行测试。
捕获网站的timelinetrace,用来帮助分析性能问题。
测试浏览器扩展。
Puppeteer因为是一个npm的包,所以安装很简单:
npmipuppeteer
或者
yarnaddpuppeteer
如何使用:
//引入Puppeteer模块
letpuppeteer=require(puppeteer)
//puppeteer.launch实例化开启浏览器
asyncfunctiontest(){
//可以传入一个options对象({headless:false}),可以配置为无界面浏览器,也可以配置有界面浏览器
//无界面浏览器性能更高更快,有界面一般用于调试开发
letoptions={
//设置视窗的宽高
defaultViewport:{
width:1400,
height:800
//设置为有界面,如果为true,即为无界面
headless:false,
//设置放慢每个步骤的毫秒数
slowMo:250
letbrowser=awAItpuppeteer.launch(options);
//打来新页面
letpage=awaitbrowser.newPage();
//配置需要访问网址
awaitpage.goto()
//截图
awaitpage.screenshot({path:test.png
//打印pdf
awaitpage.pdf({path:example.pdf,format:A4
//结束关闭
awaitbrowser.close();
}test()
//获取页面内容
//$$eval函数,使回调函数可以运行在浏览器中,并且可以通过浏览器的方式进行输出
awaitpage.$$eval(#head#s-top-lefta,(res)={
//console.log(res);
res.forEach((item,index)={
console.log($(item).attr(href
//监听console.log事件
page.on(console,(...args)={
console.log(args);
//获取页面对象,添加点击事件
ElementHandle=awaitpage.$$(#head#s-top-lefta)
ElementHandle[0].click();
//通过表单输入进行搜索
inputBox=awaitpage.$(#form.s_ipt_wr#kw)
awaitinputBox.focus()//光标定位在输入框
awaitpage.keyboard.type(Node.js)//向输入框输入内容
search=awaitpage.$(.s_btn_wrinput[type=submit])
search.click()//点击搜索按钮
爬虫实践
很多网页通过user-agent来判断设备,可以通过page.emulate(options)来进行模拟。options有两个配置项,一个为userAgent,另一个为viewport可以设置宽度(width)、高度(height)、屏幕缩放(deviceScaleFactor)、是否是移动端(isMobile)、有无touch事件(hasTouch)。
constpuppeteer=require(puppeteer
constdevices=require(puppeteer/DeviceDescriptors
constiPhone=devices[iPhone6
puppeteer.launch().then(asyncbrowser={
constpage=awaitbrowser.newPage();
awaitpage.emulate(iPhone);
awaitpage.goto(
//otheractions...
awaitbrowser.close();
});
上述代码则模拟了iPhone6访问某网站,其中devices是puppeteer内置的一些常见设备的模拟参数。
很多网页需要登录,有两种解决方案:
让puppeteer去输入账号密码常用方法:点击可以使用page.click(selector[,options])方法,也可以选择聚焦page.focus(selector)。输入可以使用page.type(selector,text[,options])输入指定的字符串,还可以在options中设置delay缓慢输入更像真人一些。也可以使用keyboard.down(key[,options])来一个字符一个字符的输入。
如果是通过cookie判断登录状态的可以通过page.setCookie(...cookies),想要维持cookie
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 口腔科教学的数字化转型优势及前景
- 财务管理考试2025年有效复习试题及答案
- 商场招租意向协议书
- 工程法规考试复习与日常学习习惯的有效结合我方法试题及答案
- 2025年中级会计实务考试前沿试题及答案
- 2025年工程法规考试线上资料分享试题及答案
- 企业IT架构升级的路径选择与实施
- 商业领域的数字化转型与营销策略优化
- 不停电作业竞赛练习试题
- 2025年财务管理重点突破试题及答案
- 2025年建筑模板制品行业深度研究报告
- 湖北省荆门市2025年七年级下学期语文期末考试试卷及答案
- 2025-2030年中国叶黄素行业市场发展现状及竞争格局与投资发展研究报告
- 2024第41届全国中学生物理竞赛预赛试题(含答案)
- 内镜洗消相关试题及答案
- 高效节能泵结构优化-全面剖析
- 2024-2025湘科版小学科学四年级下册期末考试卷及答案(三套)
- 中国企业科创力研究报告2024
- 细胞培养技术的基础试题及答案
- (广东二模)2025年广东省高三高考模拟测试(二)历史试卷(含答案)
- GB/T 14601-2025电子特气氨
评论
0/150
提交评论