前言
待补充….
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,文件配置 |