gpt4 book ai didi

javascript - 如何以编程方式在 Protractor 中设置下载路径?

转载 作者:行者123 更新时间:2023-12-01 17:56:09 24 4
gpt4 key购买 nike

我正在尝试在 conf.js 中为 Protractor 动态设置 Chrome 下载路径。我们的网络服务导出一个文件,我正在编写一个测试,需要知道下载文件的位置以便验证它。现在,我正在努力设置浏览器的下载路径。问题是我团队的其他成员和构建机器也将运行此测试,并且没有我可以选择的单一下载路径适用于每台开发和构建机器。看了一些资料后,我认为最好的解决方案是从 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 函数中构造我的配置对象的功能部分。我不能在 onPrepare 函数之外调用 getCapabilities,因为 conf.js 本身没有它的上下文。设置网络路径对于团队的设置也是不可行的。

有没有其他人处理过这样的事情?是否有任何其他方式以编程方式设置 Chrome 的下载路径?

最佳答案

这可能无法以您希望的方式解决问题,但您可以运行

protractor conf.js --capabilities.chromeOptions.prefs 'path/to/user/folder'

如果用户足够聪明,可以知道、查找或存储该信息。


编辑:

您也许可以使用 .execute()强制 browser.getCapabilities(); 在移动到下一个语句之前完成。

通常由 protractor.promise.controlFlow().execute( myPromise ) 调用

但是,我认为 execute() 也会返回一个 promise,因此您可能会回到原点。

关于javascript - 如何以编程方式在 Protractor 中设置下载路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30032057/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com