我有一个场景,我需要单击一个链接,该链接将触发.CSV文件下载到默认位置(/tmp),它在 chrome 和 firefox 浏览器上都可以正常工作,但有时基于 conf.js 中的 multiCapabilities 配置它只能在单个浏览器上工作(意味着一组配置有助于 chrome 正常工作,但不是 firefox,另一组导致 firefox 工作但不是 chrome)。我使用以下 stackoverflow 帖子作为参考:Protractor e2e 测试下载pdf文件的案例。而且我的尝试以某种方式工作得很好,但是基于我使用的 multiCapabilities 配置,脚本仅在 chrome 或 firefox 上命中。
请注意,chrome 将使用以下配置,在此我没有添加 firefox 配置文件设置。因此,Firefox 中的文件下载部分不适用于以下配置。
multiCapabilities: [
{
'browserName': 'chrome',
'platform': 'ANY',
'chromeOptions': {
args: ['--no-sandbox', '--test-type=browser'],
prefs: {
download: {
'prompt_for_download': false,
'directory_upgrade': true,
'default_directory': '/tmp'
}
}
}
},
{
'browserName': 'firefox',
}
],
基于上面提到的url(下载pdf文件的量角器e2e测试用例)我在我的util文件中添加了函数getFirefoxProfile():common.js
var getFirefoxProfile = function() {
var deferred = q.defer();
var firefoxProfile = new FirefoxProfile();
firefoxProfile.setPreference("browser.download.folderList", 2);
firefoxProfile.setPreference("browser.download.manager.showWhenStarting", false);
firefoxProfile.setPreference("browser.download.dir", '/tmp');
firefoxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk", "text/comma-separated-values, text/csv, application/csv, application/excel, application/vnd.ms-excel, application/vnd.msexcel, text/anytext");
firefoxProfile.encoded(function(encodedProfile) {
var multiCapabilities = [{
browserName: 'firefox',
firefox_profile : encodedProfile
}];
deferred.resolve(multiCapabilities);
});
return deferred.promise;
}
exports.getFirefoxProfile = getFirefoxProfile;
然后我更新了 conf.js 如下:
getMultiCapabilities: com.getFirefoxProfile,
multiCapabilities: [
{
'browserName': 'chrome',
'platform': 'ANY',
'chromeOptions': {
args: ['--no-sandbox', '--test-type=browser'],
prefs: {
download: {
'prompt_for_download': false,
'directory_upgrade': true,
'default_directory': '/tmp'
}
}
}
},
{
'browserName': 'firefox',
}
],
并且getMultiCapabilities: com.getFirefoxProfile在 conf.js 中使用时将覆盖 conf.js 中提到的功能和 multiCapabilities,当我运行我的脚本时,它只在 Firefox 上而不是在 chrome 上执行脚本。关于如何解决这个问题的任何想法?我的要求是登录到 chrome,执行 csv 下载,从 chrome 中注销,然后登录到 firefox 并做同样的事情。
任何帮助将不胜感激..