angular - 带有文件下载的角度 ng e2e 测试用例不适用于无头 chrome
问题描述
在一个 angular2+ 项目中,我有一个 e2e 测试用例,它单击一个按钮,下载一个文件,并检查内容。它可以在正常模式下工作,但不能在 --headless 模式下工作。文件未下载,测试用例超时。
在我的 protractor.conf.js 中,我已经尝试了很多在不同地方找到的标志:
const os = require('os');
[...]
capabilities: {
'browserName': 'chrome',
chromeOptions: {
args: ['--headless', '--disable-gpu', '--disable-popup-blocking', '--no-sandbox', '--window-size=1024,768', '--remote-debugging-port=9222', "--disable-dev-shm-usage"],
prefs: {
'download': {
'prompt_for_download': false,
'directory_upgrade': true,
'default_directory': os.homedir() + '/Downloads'
},
safebrowsing: {enabled: false, disable_download_protection: true},
browser: {set_download_behavior: { behavior: 'allow' }}
}
}
},
没有成功。
我也在某处读到你可以像这样配置它
// works for headless and "normal" mode
browser.driver.sendChromiumCommand('Page.setDownloadBehavior', {
'behavior': 'allow',
'downloadPath': DOWNLOAD_DIR
});
但是在任何“浏览器”变量中都没有“sendChromiumCommand”,无论是在 protractor.conf.js 还是在 spec ts 文件中。
我怎样才能让它工作?提前致谢。
解决方案
刚刚找到了解决方案。
将这些行添加到您的protractor.conf.js
:
exports.config = {
...
onPrepare() {
...
browser.driver.sendChromiumCommand('Page.setDownloadBehavior', {
behavior: 'allow',
downloadPath: downloadsPath
});
}
};
来自:https ://bugs.chromium.org/p/chromium/issues/detail?id=696481#c196
推荐阅读
- css - CSS:仅在悬停图像时显示动画按钮
- python - 如何在 NLTK 中为 tri-gram 语言模型在单词级别执行 Kneser-Ney 平滑?
- java - 试图让 BufferedWriter 将 textarea 保存到 txt 文件
- r - 使用 ggrepel 标记单个点
- mysql - 关系数据库如何组织数据?
- scala - 在 ReactiveMongo 16.6 中将错误作为 Future[Result] 处理
- javascript - 使用 moment.js 确定 moment() 是在特定时间块之前、期间还是之后
- postgresql - PostgreSQL:是否可以手动构建 tsvector 值?
- c - 你可以在 C 头文件中将 typedef 的变量重新转换为另一种类型吗?
- database - 两台计算机之间的 Oracle DB 连接