var path = require('path'),
uploadInput = element(by.css("input[type=file]")),
fileToUpload = "../../download.jpeg",
absolutePath = path.resolve(__dirname, fileToUpload);
uploadInput.sendKeys(absolutePath);
$('input[type="file"]').sendKeys(absolutePath);
以上工作正常,对于一个文件。我需要在一个页面中测试多个文件上传按钮和多个文件上传按钮。如何将不同的文件传递给每个相应的文件上传按钮?
答案 0 :(得分:1)
选择所有文件上传按钮 - 使用元素阵列查找器element.all()
或$$()
并迭代所有输入元素以上传文件
有关详细信息,请参阅here
我建议使用下面的方法,您可以将所有文件映射到相应的文件类型。
我假设您的输入元素上有一个指示符 - 以属性的形式 - label
,但您可以根据您的要求对其进行修改。
var files ={
textFile: '../../download.txt',
pdfFile: '../../pdf.pdf',
jpgFile: '../../download.jpeg'
}
element.all(by.css('input[type="file"]')).then(function(inputElements) {
return inputElements.forEach(function(inputElement) {
return inputElement.getAttribute('label').then(function(fileType){
return inputElement.sendKeys(path.resolve(__dirname, files[fileType]));
});
});
});
答案 1 :(得分:0)
这里要考虑几件事。
1)你只有一个" absolutePath" - 如果您要一次处理多个文件,您可能需要为每个文件定义一个路径。
2)使用$("input[type='file']")
将选择DOM中的所有文件输入。如果您希望能够对单个文件输入进行操作,则需要为每个文件设置选择器,然后使用唯一ID选择每个文件:
$("#file1").sendKeys(etc..
$("#file2").sendKeys(etc..