我遇到了量角器测试的问题。它工作,但现在(甚至认为没有任何改变)它不是。 测试只是打开应用程序(Web应用程序)并单击按钮下载图像。下载应该立即开始。 问题是下载事件后的下一条指令抛出异常,失败:chrome无法访问。我使用的是最新的chrome和chrome驱动程序版本。
量角器的功能部分是这样的:
capabilities: {
browserName: 'chrome',
loggingPrefs: { browser: 'ALL' },
chromeOptions: {
args: ['--headless', '--window-size=1240,780'],
},
}
我正在阅读使用DevTools在无头模式下启用下载(Page.setDownloadBehavior),但到目前为止还没有运气。
有人也有这个问题吗?有任何线索如何修复它?
感谢。
答案 0 :(得分:4)
可能还有另一种简单的方法,但这就是我在测试套件中所做的。
我使用了got
库,但是,您可以使用任何库来发送HTTP post请求。
讨论在无头镀铬中设置下载目录:https://bugs.chromium.org/p/chromium/issues/detail?id=696481
let got = require('got');
let session = await browser.getSession();
let sessionId = session['id_'];
let params = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': downloadDir }}
await got.post('http://localhost:4444/wd/hub/session/'+ sessionId + '/chromium/send_command', {body: JSON.stringify(params)})
如果您未在量角器配置中禁用ControlFlow,请将ASync / Await更改为.then
。
答案 1 :(得分:0)
一个更简单的解决方案是将这些行添加到您的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
如果您懒于找到下载路径,只需将其粘贴在protractor.conf.js
的顶部:
var path = require('path');
var downloadsPath = path.resolve(__dirname, './downloads');
它将把文件下载到e2e/downloads
文件夹中。只需在测试中使用相同的代码即可确定文件是否已下载。