以前にこの質問に対するいくつかの回答があり、私はそれらすべてを試しましたが、クリックするだけではありません.
分度器のページオブジェクトとそれが取り組んでいると思われるhtmlからファイルアップロード機能を含めています。
アップロードが Firefox で機能するように、これを表現する正しい方法を理解するのを手伝ってくれませんか? これは Chrome で問題なく動作します。やりすぎて、もう何を見ているのかわからないほどです。
私のテスト関数:
function uploadAFile() {
var path = require('path');
var fileToUpload = '/documents/approved.png';
var absolutePath = path.resolve(__dirname, fileToUpload);
// Find the file input element
var fileElem = element(by.css('input[type="file"]'));
var unhideFileInputs = function () {
var makeInputVisible = function () {
fileElem.removeClass('ng-hide');
};
};
// File Upload functions
browser.driver.executeScript(unhideFileInputs);
fileElem.sendKeys(absolutePath);
//element(by.css('.file-upload-mask')).click();
}
私のhtml:
<form action="https://www.website.com/datadatadata.php" class="ng-pristine ng-invalid
ng-invalid-required" data-ng-show="showReceipt()"enctype="multipart/form-data"
id="receiptForm" method="post" name="receiptForm" target="upload-target">
<div class="form-group no-margin">
<label class="control-label ng-binding">
Upload a receipt!
<span class="ng-binding ng-hide" data-ng-show="!requireReceipt()">(optional)</span>
</label>
<div class="input-group">
<label class="file-upload-mask">
<input class="ng-pristine ng-valid" data-ng-model="fUpload" id="fUpload" name="fUpload" type="file">
<span class="btn-group" data-ng-show="selectedFileName==''">
<span class="btn btn-success"><i class="fa fa-paperclip"></i></span>
<span class="btn btn-default ng-binding">Click here to upload your receipt</span>
</span>
</label>
<span class="btn-group ng-hide" data-ng-show="selectedFileName!=''">
<span class="btn btn-danger" data-ng-click="clearfUpload()"><i class="fa fa-times"></i></span>
<span class="btn btn-default ng-binding"></span>
</span>
</div>
<input name="c" type="hidden" value="1234567">
<input name="objName" type="hidden" value="submission1">
<input name="id" type="hidden" value="">
<input name="fieldName" type="hidden" value="receipt1">
</div>
<input class="hide ng-pristine ng-invalid ng-invalid-required" data-ng-model="selectedFileName"
data-ng-required="requireReceipt()" required="required" type="text">
</form>