我正在尝试为Protractor动态设置Chrome下载路径,配置信息保存在conf.js中。我们的web服务会导出一个文件,我正在编写一个测试用例来验证这个文件。目前,我正在硬编码浏览器的下载路径。问题是我的团队成员以及构建机也将运行此测试,我无法选定一个适用于每个开发和构建机的单一下载路径。经过一些阅读,我认为最好的解决方案是从onPrepare函数中的getCapabilities()函数获取用户数据目录,然后将其设置为下载目录,代码如下:
onPrepare: function () {
var jasmineReporters = require('jasmine-reporters');
jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter( {
savePath: 'reports', consolidateAll: true } ));
var cap = browser.getCapabilities();
// Set prefsDict using cap.caps_.userDataDir
},
capabilities: {
'chromeOptions': {
'prefs': prefsDict
}
}
这将使代码具有动态性,但是getCapabilities返回一个promise,因此上面的代码不起作用,因为conf.js在promise解决之前就完成了构建配置对象的过程。在getCapabilities上使用then函数也没有帮助,因为我无法在then函数中构建配置对象的capabilities部分。我无法在onPrepare函数之外调用getCapabilities,因为conf.js本身没有它的上下文。对于团队的设置,设置网络路径也不可行。
还有其他人处理过类似的问题吗?是否有其他方法可以以编程方式设置Chrome的下载路径?