如何使用Protractor将文件上传到ng-file-upload元素

时间:2015-03-17 05:28:27

标签: javascript testing selenium protractor end-to-end

HTML如下:
<input type="file" style="display: none" ng-file-select="" ng-file-change="upload($files)" ng-multiple="multiple" accept=".jpg,.png">

我需要使用ng-file-upload将文件上传到使用Protractor上传图像文件的元素:

var uploadFile = element(by.css('input[type="file"]'));
uploadFile.sendKeys('C:\\Temp\\test.png');
uploadFile.evaluate("openMetadataDialog({file:imgFile})");

然而,上述情况并不奏效。我无法理解如何上传文件! 根据我的理解,只要我将keys发送到input元素,就应该自己调用upload函数!但是,这似乎并没有发生!

的问候,
Sakshi

1 个答案:

答案 0 :(得分:2)

似乎ng-file-upload对.sendKeys(...)没有反应,其文件更改不会被调用。您可以使用标准onchange事件来调用某些自定义上载逻辑:

<input type="file" 
       style="display: none"     
       onchange="angular.element(this).scope().upload(this)" 
       ng-file-select 
       ng-multiple="multiple" 
       accept=".jpg,.png">

指向具有文件属性的input元素。