我用 Protractor 打架,因为对于某些测试我需要上传文件。我的 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>
输入 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;">
我在 Protractor 中搜索了很多关于这个问题的信息。基本上人们的建议是复制/粘贴文件路径以输入,然后单击“上传”
在我的例子中有一个问题,因为这里有输入但它存储了一些对象而不是 PATH
如果我手动选择文件,它会存储在 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>
也许这真的很愚蠢,但我在想是否有其他方法可以做到这一点?也许创建对象并将其发送到那里或其他什么?
欢迎提出任何建议。
最佳答案
通过 Protractor/selenium 上传文件的常见且最现实的方法是将 key 发送到 file
输入并避免打开您无法打开的上传文件对话框控制:
var uploadInput = element(by.css("input[type=file]"));
uploadInput.sendKeys("path/to/file");
关于javascript - 上传文件 - Protractor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30977388/