这次我们来聊一聊playwright
的一些配置项
一、登录保存数据
网站每次都要登录,很烦,没必要
所以我们登录之后,可以把cookie
或者session
什么的保存起来
下次登录再把数据注入
这样就不用再登录了
1.先正常登录
就写代码登录
2.保存数据
通过context.storageState
保存数据到本地文件
例如:
1 2 3 4
| await context.storageState({ path: dirPath + '/auth/auth.json', })
|
3.回到初始化,生成brower时,通过文件注入
1 2 3 4 5 6 7 8 9 10 11 12
| const authState = require('../auth/auth.json') const browser = await chromium.launch({ headless: false, channel: 'msedge', }); const context = await browser.newContext({ storageState: authState ?? {}, }); const page = await context.newPage({ });
|
二、忽略不安全的https
自签名证书,这个很常见。
很多情况下,使用自签名证书做测试环境或者内网环境的https,是一种非常常见且低成本的https方式。
但是自签名证书因为没有CA认证,浏览器会报非专用链接提示
playwright在访问此类地址时,也会有相同的提示,导致无法进行正常的自动化工作。
我们可以通过配置playwright的设置项,让浏览器默认忽略此类问题。
1 2 3 4 5 6 7 8 9 10 11 12
| const browser = await chromium.launch({ headless: false, channel: 'msedge', }); const context = await browser.newContext({ storageState: authState ?? {}, ignoreHTTPSErrors: true }); const page = await context.newPage({ });
|
三、上传文件
有些网页流程中,需要上传文件。
例如发邮件时需要上传附件
这时候就有点犯难,因为上传文件的框,它不是网页,它是Windows程序
其实playwright
对此已有处理,使用fileChooser
即可
1 2 3 4 5 6
| // 文件路径,绝对路径! const filePath = 'xxxx' const fileChooserPromise = page.waitForEvent('filechooser'); await page.click('text=添加附件'); const fileChooser = await fileChooserPromise; await fileChooser.setFiles(filePath);
|
四、下载文件
比如把文件下载在当前项目路径下等
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| const [download] = await Promise.all([ page.waitForEvent('download'), mainFrame.locator('xpath=xxx').click(), ]);
const fileName = 'xxxx'
await download.saveAs('filepath');
|