上传文件 - 量角器

And*_*rit 2 javascript testing selenium end-to-end protractor

我与量角器打架,因为对于一些测试我需要UPLOAD文件.我的HTML看起来像:

<div class="panel-footer">
    <ul class="list-unstyled">
      <!-- ngRepeat: file in imagesToUpload -->      
    </ul>
    <button class="btn btn-sm btn-success pull-right ng-binding ng-hide" ng-show="imagesToUpload.length" ng-click="uploadImages()">Nahrát na server</button>
    <button class="btn btn-sm btn-primary ng-binding" ng-file-select="onImageSelect($files)" data-multiple="true" style="overflow: hidden;">Vybrat soubory<input type="file" class="btn btn-sm btn-primary ng-binding" ng-file-select="onImageSelect($files)" data-multiple="true" multiple="multiple" __wrapper_for_parent_="true" style="width: 1px; height: 1px; opacity: 0; position: absolute; padding: 0px; margin: 0px; overflow: hidden;"></button>
  </div>
Run Code Online (Sandbox Code Playgroud)

输入HTML:

<input type="file" class="btn btn-sm btn-primary ng-binding" ng-file-select="onImageSelect($files)" data-multiple="true" multiple="multiple" __wrapper_for_parent_="true" style="width: 1px; height: 1px; opacity: 0; position: absolute; padding: 0px; margin: 0px; overflow: hidden;">
Run Code Online (Sandbox Code Playgroud)

我在量角器中搜索了很多这个问题.基本上人们建议将COPY/PASTE路径输入文件然后点击"UPLOAD"

在我的情况下有一个问题,因为输入在这里,但它存储一些对象而不是PATH

如果我选择manualy文件,它存储在HTML中,如:

<li ng-repeat="file in imagesToUpload" class="ng-binding ng-scope">
        FileName.png <span title="remove" class="btn btn-flat glyphicon glyphicon-remove" ng-click="imagesToUpload.splice($index, 1)"></span>
      </li>
Run Code Online (Sandbox Code Playgroud)

也许这真的很愚蠢,但我在想是否还有其他方法如何做到这一点?也许创建对象并将其发送到那里或其他东西?

欢迎任何建议.

ale*_*cxe 6

通过量角器/ selenium上传文件的常见和最现实的方法是将键发送到file输入并避免打开您无法控制的上载文件对话框:

var uploadInput = element(by.css("input[type=file]"));
uploadInput.sendKeys("path/to/file");
Run Code Online (Sandbox Code Playgroud)