[英]e2e testing in Angular: uploading and downloading a file doesn't work using protractor in firefox
首先我应该指出,我们正在使用 docker 运行 web 应用程序。
当我在 Firefox 中使用 protractor 下载文件时收到提示,这会阻止我下载,所以我试图通过修改protractor.conf.js
文件来禁用下载提示(如下)。
当我尝试在无头模式下使用 Firefox 上传文件时,出现错误Failed: Failed to decode response from marionette
但如果我禁用无头模式,它工作正常。
我需要在此测试中使用 Firefox 和无头模式,我尝试使用 chrome 运行测试并且它有效,该问题仅在使用 Firefox 时发生。 有人可以在这里为我提供帮助吗?
PS:我已经研究过其他类似的问题,但解决方案已经过时(angularjs),它们对我不起作用。
Protractor.conf.js
exports.config = {
allScriptsTimeout: 11000,
specs: [
'./e2e/**/*.e2e-spec.ts'
],
capabilities:
// { browserName: 'chrome',
// chromeOptions: {
// args: ['--headless', "--disable-gpu", '--no-sandbox'],
// // prefs: {
// // 'download': {
// // prompt_for_download: false,
// // // 'directory_upgrade': true,
// // // 'default_directory': '/home/houssem/Desktop'
// // }
// // }
// }
// },
{ browserName: 'firefox',
marionette: true,
acceptInsecureCerts: true,
'moz:firefoxOptions': {
args: [ "--headless" ],
prefs: {
'pdfjs.disabled': true,
'browser.download.folderList' : 0,
'browser.download.dir' : process.cwd() + "/Desktop",
'browser.download.panel.shown': false,
'browser.download.useDownloadDir': true,
'browser.download.manager.useWindow': false,
'browser.helperApps.alwaysAsk.force': false,
'browser.helperApps.neverAsk.openFile': true,
'browser.download.manager.closeWhenDone': false,
'browser.download.manager.alertOnEXEOpen': false,
'browser.download.manager.showWhenStarting': false,
'browser.download.manager.focusWhenStarting': false,
'browser.download.manager.showAlertOnComplete': false,
'browser.helperApps.neverAsk.saveToDisk' : 'image/svg+xml,image/vnd.dxf,image/png,image/x-citrix-png,image/x-png',
},
},
},
directConnect: true,
baseUrl: 'http://localhost:4200/',
framework: 'jasmine',
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000,
print: function() {}
},
app.e2e-spec.ts
it('Testing upload button', () => {
page.navigateTo('/rules');
var path = require('path');
var fileToUpload = '../../tests/rules/rule-regex.json';
var absolutePath = path.resolve(__dirname, fileToUpload);
page.upload(absolutePath);
});
it('Testing download button', () => {
page.navigateTo('/nodeSymbols');
page.download();
});
应用程序.po.ts
upload(file){
element(by.css('.controlPanel .batchUpload')).click();
element(by.css('#batchUploadInput')).sendKeys(file);
}
download(){
for (let i = 0; i < 6; i++) {
element(by.css('.controlPanel .download')).click();
element.all(by.css('#downloadMenu .downloadOption')).get(i).click();
}
}
framework: 'jasmine',
capabilities: { browserName: 'firefox',
marionette: true,
acceptInsecureCerts: true,
'moz:firefoxOptions': {
args: [ "--headless" ],
prefs: {
'browser.download.folderList': 2, // custom location,
'browser.download.manager.showWhenStarting':false,
'browser.download.dir':'/srv/download',
"browser.download.manager.alertOnEXEOpen": false,
"browser.download.manager.closeWhenDone": false,
"browser.download.manager.focusWhenStarting": false,
'browser.helperApps.neverAsk.saveToDisk' : 'application/x-msdownload,application/octet-stream,image/svg+xml,image/vnd.dxf,image/png,image/x-citrix-png,image/x-png,image/jpeg,image/jpg'
},
},
},
这适用于例如尝试:
describe('workspace-project App', function () {
it('Test Puppeteer screenshot', async function() {
await browser.get('https://unsplash.com/photos/gD1t-iP_X4A')
var EC = protractor.ExpectedConditions;
await browser.wait(await EC.elementToBeClickable($('[class="_13Q- _27vvN _2iWc-"]')), 5 * 1000, 'Server should start within 5 seconds');
await $('[class="_13Q- _27vvN _2iWc-"]').click()
await browser.sleep(6000)
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.