文件下载
在网页测试中自动化文件下载时,必须在不同浏览器中一致地处理这些下载,以确保测试执行的可靠性。
在这里,我们提供文件下载的最佳实践,并演示如何为Google Chrome、Mozilla Firefox和Microsoft Edge配置下载目录。
下载路径
在测试脚本中硬编码下载路径可能导致维护问题和可移植性问题。使用相对路径作为下载目录,以确保在不同环境中的可移植性和兼容性。
// 👎
// 硬编码下载路径
const downloadPath = '/path/to/downloads';
// 👍
// 相对下载路径
const downloadPath = path.join(__dirname, 'downloads');
等待策略
未能实施适当的等待策略可能导致竞态条件或不可靠的测试,特别是对于下载完成。实施显式等待策略以等待文件下载完成,确保测试步骤之间的同步。
// 👎
// 没有明确等待下载完成
await browser.pause(5000);
// 👍
// 等待文件下载完成
await waitUntil(async ()=> await fs.existsSync(downloadPath), 5000);
配置下载目录
要覆盖Google Chrome、Mozilla Firefox和Microsoft Edge的文件下载行为,请在WebDriverIO功能中提供下载目录:
- Chrome
- Firefox
- Microsoft Edge
wdio.conf.js
loading...
wdio.conf.js
loading...
wdio.conf.js
loading...
有关示例实现,请参考WebdriverIO测试下载行为配方。
配置Chromium浏览器下载
要使用WebDriverIO的getPuppeteer方法访问Chrome DevTools,更改__基于Chromium__的浏览器(如Chrome、Edge、Brave等)的下载路径。
const page = await browser.getPuppeteer();
// 初始化CDP会话:
const cdpSession = await page.target().createCDPSession();
// 设置下载路径:
await cdpSession.send('Browser.setDownloadBehavior', { behavior: 'allow', downloadPath: downloadPath });