Angularjs 用于下载文件的量角器e2e测试用例可以在chrome上正常工作,但不能在firefox上正常工作,反之亦然?
我有一个场景,我需要点击一个链接,该链接将触发.CSV文件下载到一个默认位置(/tmp),它在chrome和firefox浏览器上都可以正常工作,但基于conf.js中的多容量配置,有时它只在单个浏览器上工作(意味着一组配置有助于chrome正常工作,但对firefox无效,而另一组则导致firefox正常工作,但对chrome无效)。我使用了下面的stackoverflow帖子作为参考:。我的尝试在某种程度上运行良好,但基于我使用的多容量配置,脚本仅在chrome或firefox上运行 请注意,chrome将与以下配置一起工作,在这里我没有添加firefox配置文件设置。因此firefox中的文件下载部分不会与以下配置一起工作Angularjs 用于下载文件的量角器e2e测试用例可以在chrome上正常工作,但不能在firefox上正常工作,反之亦然?,angularjs,firefox,protractor,webdriverjs,firefox-profile,Angularjs,Firefox,Protractor,Webdriverjs,Firefox Profile,我有一个场景,我需要点击一个链接,该链接将触发.CSV文件下载到一个默认位置(/tmp),它在chrome和firefox浏览器上都可以正常工作,但基于conf.js中的多容量配置,有时它只在单个浏览器上工作(意味着一组配置有助于chrome正常工作,但对firefox无效,而另一组则导致firefox正常工作,但对chrome无效)。我使用了下面的stackoverflow帖子作为参考:。我的尝试在某种程度上运行良好,但基于我使用的多容量配置,脚本仅在chrome或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(),我在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中提到的功能和多容量,当我运行脚本时,它只在firefox上执行脚本,而不在chrome上执行。
我的要求是登录到chrome,执行csv下载,从chrome注销,然后登录到firefox并执行同样的操作
非常感谢您的帮助。对于向多个浏览器添加功能(chrome和firefox),我们需要使用多功能,并添加每个浏览器的功能(firefox和chrome),如下所示 注意:我在这里配置了多功能和承诺
var q = require("q");
var FirefoxProfile = require("firefox-profile");
exports.config = {
directConnect: true,
onPrepare: function () {
browser.driver.getCapabilities().then(function(caps){
browser.browserName = caps.get('browserName');
});
},
maxSessions: 1,
getPageTimeout: 150000,
allScriptsTimeout: 150000,
params: require('../testdata/data.json'),
framework: 'jasmine2',
specs: ['../unit_test/*_spec.js'],
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 150000
},
//seleniumAddress: "http://127.0.0.1:4444/wd/hub",
getMultiCapabilities: function() {
var deferred = q.defer();
var multiCapabilities = [
{
'browserName': 'chrome',
'platform': 'ANY',
'chromeOptions': {
args: ['--no-sandbox', '--test-type=browser'],
prefs: {
download: {
'prompt_for_download': false,
'directory_upgrade': true,
'default_directory': '/tmp'
}
}
}
},
];
// Wait for a server to be ready or get capabilities asynchronously.
setTimeout(function() {
var firefoxProfile = new FirefoxProfile();
firefoxProfile.setPreference("javascript.enabled", false);
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 capabilities = {
"browserName": "firefox",
"firefox_profile": encodedProfile
};
multiCapabilities.push(capabilities);
deferred.resolve(multiCapabilities);
});
}, 1000);
return deferred.promise;
}
};
默认下载位置设置为/tmp对于浏览器和firefox来说,要设置功能,我们需要创建firefox配置文件并设置首选项
注意:
“browser.download.folderList”,2==>将下载位置设置为用户定义的。传递值0将下载设置为桌面,传递值1将下载到默认下载位置
另外还有“browser.helperApps.neverAsk.saveToDisk”,“文本/逗号分隔值,text/csv,application/csv,application/excel,application/vnd.ms-excel,application/vnd.msexcel,text/anytext”=>使用的mime类型是csv mime类型。
如果您的下载文件是pdf或其他文件,请将csv mime类型替换为您的文件mime类型。您好,您能为我编写pdf mime类型吗?@vsathyak