1.Jest環境配置html
5.Puppeteer元素獲取github
6.Puppeteer文本值獲取typescript
8.Puppeteer 拖拽json
安裝包 | 命令 |
---|---|
TypeScript | npm install typescript --save-dev |
Jest | npm install jest --save-dev |
ts-jest | npm install ts-jest --save-dev |
@types/jest | npm install @types/jest --save-dev |
1.mkdir UIAuto_Puppeteer //建立文件夾 2.cd UIAuto_Puppeteer // 進入該文件夾 3.安裝以上包 4.tsc --init // 初始化相關配置文件,生成tsconfig.json 5.jest --init //初始化,生成jest.config.js
須要注意的是target 修改爲es6,咱們如今按照es6的語法特性async
{ "compilerOptions": { "target": "es6", "module": "commonjs", "sourceMap": true, "outDir": "dist", } }
module.exports = { roots:[ "<rootDir>" ], "moduleFileExtensions": [ "ts", "js", ], // 匹配__tests__文件夾下的後綴爲 .test.ts文件 "testMatch": [ "**/__tests__/**/*.test.ts" ], "transform": { "^.+\\.ts$": "ts-jest" } };
--UIAuto_Puppeteer ---__tests__ ----demo -----1.test.ts -----2.test.ts ---node_mudules ---jest.config.js ---tsconfig.js ---package.json ---package-lock.json
$ UIAuto_Puppeteer : npm rum test
安裝包 | 命令 |
---|---|
puppeteer | npm install puppeteer --save-dev |
解決Chromium沒法下載 | npm i --save puppeteer --ignore-scripts |
解決Chromium沒法下載 | set PUPPETEER_DOWNLOAD_HOST = https://storage.googleapis.com.cnpmjs.org |
@types/puppeteer | npm install @types/puppeteer --save-dev |
@types/jest-environment-puppeteer | npm install @types/puppeteer --save-dev |
@types/jest | npm install @types/jest --save-dev |
jest-puppeteer | npm install jest-puppeteer --save-dev |
jest-environment-puppeteer | npm install jest-environment-puppeteer --save-dev |
"globalSetup": "jest-environment-puppeteer/setup", "globalTeardown": "jest-environment-puppeteer/teardown", "testEnvironment": "./puppeteer_enviroment.js",
具體能夠看看jest-environment-puppeteer的源碼,這個代碼很簡單,setUp繼承了jest-environment-puppetee,teardown() 繼承了jest-environment-puppetee 裏的teardown()
const PuppeteerEnviromenent = require('jest-environment-puppeteer'); class CustomEnvironmemnt extends PuppeteerEnviromenent { async setup() { await super.setup(); } async teardown() { await super.teardown() } } module.exports = CustomEnvironmemnt
代碼以下,測試套件這邊就不說了,比較簡單
import { Page } from 'puppeteer'; describe('ly.com demo cases', () => { let page: Page; beforeEach(async () => { page = await browser.newPage(); await page.goto('https://www.ly.com/'); }); afterEach(async ()=> { await page.close(); }) test('test-ly-demo', async () => { const logo = await page.$eval('.logo', el => el.getAttribute('title')); console.log('logo'); await expect(logo).toEqual('同程旅遊'); }); })