gpt4 book ai didi

Angular 6 - 使用 Protractor 测试文件下载时,如何设置文件目的地的相对路径

转载 作者:行者123 更新时间:2023-12-01 20:17:42 30 4
gpt4 key购买 nike

我需要下载 CSV 并在 Protractor 测试中检查其内容。测试作为我们部署过程的一部分运行,因此此下载的路径需要是相对的。

查看其他solutions ,我在/e2e 处创建了一个名为 download 的文件夹,并将其添加到我的 protractor.conf.js 中:

capabilities: {
browserName: 'chrome',
chromeOptions: {
args: ['--disable-gpu']
},
prefs: {
'download': {
'prompt_for_download': false,
'default_directory': '/e2e/download'
}
}
},

这是原始测试,单击按钮下载文件,然后检查本地下载文件夹中的内容(下载本身实际运行后需要更改)。

  it('should export the csv', () => {
const filename = '../../../Downloads/new_Name_List_members.csv';
const exportButton = testUI.findElementBy({findBy: 'buttonText', value: 'Export to CSV'});
exportButton.click().then(() => {
browser.driver.wait(function() {
// Wait until the file has been downloaded.
return fs.existsSync(filename);
}, 5000).then(function() {
expect(fs.readFileSync(filename, { encoding: 'utf8' })).toContain('username,email,name');
});
});
});

尽管我已在 capability.prefs 中指定了路径,但单击该按钮时该文件仍会下载到我的本地下载文件夹中。即使我将其设置为完整路径 ---'default_directory': '/Users/kkanya/Documents/Code/project/e2e/download' ---它仍然会下载到我的本地下载。

我看过 Protractor config.ts file并且无法发现任何可能允许我更改默认下载目录的内容。事实上,我没有看到 prefs,这让我相信这可能不是使用最新 Protractor 执行此操作的正确方法。

非常感谢任何帮助。

最佳答案

这就是我想出来的。似乎正在发挥作用。它首先删除 e2e 中的 download 目录,然后在下载文件时重新创建它。

请注意,prefschromeOptions 上的一个值(我在原来的问题中发现了这个错误。)

protractor.conf.js:

exports.config = {
capabilities: {
browserName: 'chrome',
chromeOptions: {
args: ['--disable-gpu'],
prefs: {
download: {
'prompt_for_download': false,
'default_directory': './e2e/download'
}
}
}
},

...

onPrepare() {
// delete ./e2e/download before tests are run
rmDir('./e2e/download');
}

// https://sqa.stackexchange.com/questions/24667/how-to-clear-a-directory-before-running-protractor-tests/27653
var fs = require('fs');

function rmDir (dirPath) {
try { var files = fs.readdirSync(dirPath); }
catch(e) { return; }
if (files.length > 0)
for (var i = 0; i < files.length; i++) {
var filePath = dirPath + '/' + files[i];
if (fs.statSync(filePath).isFile())
fs.unlinkSync(filePath);
else
rmDir(filePath);
}
fs.rmdirSync(dirPath);
};

.spec.ts 文件:

  it('should export the csv', () => {
const filename = './e2e/download/new_Name_List_members.csv';

const exportButton = testUI.findElementBy({findBy: 'buttonText', value: 'Export to CSV'});
exportButton.click().then(() => {
browser.driver.wait(function() {
// Wait until the file has been downloaded.
return fs.existsSync(filename);
}, 5000).then(function() {
expect(fs.readFileSync(filename, { encoding: 'utf8' })).toContain('username,email,name');
});
});
});

希望这对某人有帮助。

关于Angular 6 - 使用 Protractor 测试文件下载时,如何设置文件目的地的相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51774487/

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