前言
待补充….
centOs7.0无法运行问题
centos必须升级到7.0以上否则会遇到依赖版本缺失问题
1 | yum install ipa-gothic-fonts xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi xorg-x11-utils xorg-x11-fonts-cyrillic xorg-x11-fonts-Type1 xorg-x11-fonts-misc -y |
puppeteer启动配置
1 | const puppeteer = require('puppeteer'); |
- options
- headless
<boolean>
以界面形式运行 - devtools
<boolean>
打开开发者工具栏
- headless
页面对象附带
page.emulate
模仿真实手机
1 | const puppeteer = require('puppeteer'); |
page.waitFor
1 | page.waitFor(selectorOrFunctionOrTimeout[, options[, ...args]]) |
等待指定dom节点内容渲染完成
1 | let selector = '.price'; |
page.goto(
url
[,options
])
- url
<string>
: 指定跳转地址 - options
<Object>
:networkidle0
: 500毫秒内没有任何一个网络请求networkidle2
: 500毫秒内没有超过任何二个网络请求domcontentloaded
: dom装载完成
页面环境执行脚本
1 | await page.evaluate(() => { |
page.evaluate(pageFunction[, …args])
pageFunction
:<Function>
执行脚本,函数在浏览器环境执行,拥有window
、document
访问权限...args
:<...Serializable|JSHandle>
,传入参数,pageFunction
无法访问函数外部变量,因为pageFunction
内容将会直接当做脚本注入页面
由于pageFunction
函数会直接被注入到页面中,所以无法获取函数外部作用域,只能讲外部参数通过args
传入,不能直接将Function
传入,只能将函数通过toString
后,在通过eval
来执行string
化后的函数。
1 | let detect = () => { |
注意:
页面注入脚本,监听事件失效
1 | let renderReady = () => { |
jest-puppeteer
使用puppeteer与jest搭配测试:
- 依赖安装
npm install --save-dev jest-puppeteer puppeteer jest
package.json
添加"jest": {"preset": "jest-puppeteer"}
依赖
TypeScript
在使用TypeScript中使用puppeteer
测试需要注意一下几点:
由于TypeScript需要进行类型检测所以需要在全局环境注入变量
依赖安装:
@types/puppeteer
, @types/jest-environment-puppeteer
配置文件:
1 | { |
指定输出版本
若输出目标为"target": "es5"
,则会报各种依赖无法查找错误
1 | ReferenceError: __awaiter is not defined |
解决方案:
1 | // tsconfig.json,文件配置 |