我使用Selenium在文件上传页面上测试Web应用程序行为。 测试的目标是检查文件选择的应用程序验证。
我在文件输入上使用webDriver.SendKeys
(C#)来模拟文件上传,文件被成功选中,但是fileInput.files[0].size
(js)总是0(或未定义?)并且app显示错误&#34 ;不要上传空文件"。手动测试时文件大小正确。
有关如何解决问题的任何建议吗?
更新代码明细:
HTML
<input id="file-path" type="file" data-bind="attr: { accept: mimeTypes }, event: { change: onFileSelect }" />
<small id="file-path-error" class="field-validation-error" data-bind="validationMessage: file"></small>
JS(文件编辑模型使用淘汰赛)
this.file = ko.observable().extend({
validation: [
{
validator: function(file) {
// valid if no file or file size < 5Mb
return !file || file.size < 5242880;
},
message: 'File size should be less than 5Mb'
}, {
validator: function(file) {
// valid if no file or file size > 0
return !file || file.size > 0;
},
message: 'Do not upload empty files'
}
]
});
this.onFileSelect = function(model, event) {
var fileInput;
fileInput = event.target;
if ((fileInput.files != null) && fileInput.files.length > 0) {
_this.file(fileInput.files[0]);
} else {
_this.file(null);
}
};
C#
webDriver.FindElement(By.Id("file-path")).SendKeys("C:\testFile.txt");
Assert.AreEqual(webDriver.FindElement(By.Id("file-path-error").Text,"");
断言总是失败,因为文件路径错误包含&#34;不上传空文件&#34; - 这就是问题所在。
答案 0 :(得分:0)
我被How to automate file upload in Internet Explorer using Selenium?
的答案误导了关于How to set a value to a file input in HTML?的讨论说实际上我们无法以编程方式上传文件。
因此没有期待这种测试的体面行为。