我想知道如何上傳文件到bootstrap-fileinput元素使用Selenium與FirefoxDriver。我試圖使用硒上傳文件bootsrap-fileinput與geckodriver
WebElement input = letter.findElement(By.cssSelector("#letter input"));
input.sendKeys("/home/me/loremIpsum.pdf");
我得到
org.openqa.selenium.InvalidArgumentException: File not found: /home/me/loremIpsum.pdf
當然的文件/home/me/loremIpsum.pdf
確實存在。
相同的代碼使用chromedriver。
我放在一起的jsfiddle展現的FileInput按鈕:https://jsfiddle.net/yscgx2zc/
從我的應用程序(從Firefox開發者控制檯複製)所提供的HTML看起來像這樣。找到接近底部的input
元素。
<div id="letter" class="form-group"><label class="control-label">The Letter<span>*</span></label><div class="file-input file-input-new"><div class="file-preview ">
<div class="close fileinput-remove">×</div>
<div class="file-drop-disabled">
<div class="file-preview-thumbnails">
</div>
<div class="clearfix"></div> <div class="file-preview-status text-center text-success"></div>
<div class="kv-fileinput-error file-error-message" style="display: none;"></div>
</div>
</div>
<div class="kv-upload-progress hide"><div class="progress">
<div class="progress-bar progress-bar-success progress-bar-striped active" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width:0%;">
0%
</div>
</div></div>
<div class="input-group file-caption-main">
<div tabindex="500" class="form-control file-caption kv-fileinput-caption">
<div class="file-caption-name"></div>
</div>
<div class="input-group-btn">
<button type="button" tabindex="500" title="Clear selected files" class="btn btn-default fileinput-remove fileinput-remove-button"><i class="glyphicon glyphicon-trash"></i> <span class="hidden-xs">Remove</span></button>
<button type="button" tabindex="500" title="Abort ongoing upload" class="btn btn-default hide fileinput-cancel fileinput-cancel-button"><i class="glyphicon glyphicon-ban-circle"></i> <span class="hidden-xs">Cancel</span></button>
<div tabindex="500" class="btn btn-primary btn-file">
<i class="glyphicon glyphicon-folder-open"></i> <span class="hidden-xs">Browse …</span>
<input data-show-upload="false" data-allowed-file-extensions="["pdf"]" data-allowed-file-types="["pdf"]" accept="application/pdf" class="file" id="1502961793221" type="file"></div>
</div>
</div></div></div>
不知何故,我無法找到問題中提供的HTML中的'tagName(「input」)''。我錯過了什麼嗎? – DebanjanB
@DebanjanB謝謝,我編輯了源代碼,使它更容易找到(在底部)。 – bastian
可能是[這個bug](https://github.com/mozilla/geckodriver/issues/858)。 – bastian