我有一个隐藏的文件输入框,就像这样:
<input type="file" id="fileToUpload-1827" multiple="" onchange="angular.element(this).scope().setFiles(this)" data-upload-id="1827" class="hidden-uploader">
我希望能够上传文件到这个网站。在Protractor中完成此任务的常规方法是:
ptor.findElement(protractor.By.css('.file-upload-form input')).sendKeys('/path/to/file')
但由于输入元素不可见,我收到了一个错误。
我尝试过:
ptor.driver.executeScript("return $('.file-upload-form input')[0].removeClass('hidden-uploader');").then(function () {
ptor.findElement(protractor.By.css('.file-upload-form input')).sendKeys('hello');
})
但是遇到了错误。
UnknownError: $(...)[0].removeClass is not a function
看起来很荒谬,需要使用executeScript
使元素可见以便上传文件,有更好的方法吗?如果没有,如何取消隐藏该元素?
输入表单的完整HTML如下:
<form class="file-upload-form ng-scope ng-pristine ng-valid" ng-if="ajaxUploadSupported">
<strong>Drag files here to upload</strong> or
<label for="fileToUpload-1953">
<div class="btn btn-info select-file-btn">
Click to Select
</div>
</label>
<div>
<input type="file" id="fileToUpload-1953" multiple="" onchange="angular.element(this).scope().setFiles(this)" data-upload-id="1953" class="hidden-uploader">
</div>
</form>