我想通过Selenium上传文件。 页面网址在下方。
<div class="async-upload__thumb item-image__area">
<div class="fab-dialog__thumb-drop-zone async-upload__thumb-drop-zone">
<p class="async-upload__thumb-msg" display="none">SELECT IMAGE</p>
<input type="file" accept="image/jpeg,image/gif,image/png" multiple="" style="display:none">
</div>
</div>
但输入元素是display="none"
所以我通过此代码上传了一个文件。
driver.findElement(By.xpath("//input[@type='file']")).sendKeys("test.jpg");
我得到这样的错误:
Element is not currently visible and so may not be interacted with
Command duration or timeout: 24 milliseconds
如何上传图片文件?
答案 0 :(得分:0)
我不确定这是否有效,但您可以删除样式属性。
WebElement element = driver.findElement(By.xpath("//input[@type='file']"))
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("arguments[0].removeAttribute('style')", element);
您可能需要再次获取元素,因为其属性已更改,或者您可能会获得StaleElementException
以上代码后面的行应该可行。
driver.findElement(By.xpath("//input[@type='file']")).sendKeys("test.jpg");
答案 1 :(得分:0)
我通过这段代码解决了这个问题。 它删除了display:none form input element。
// Remove display : none
// JavascriptExecutor js = (JavascriptExecutor) driver;
// js.executeScript("$(\"input[type='file']\").css('display','')");
然后出现选择图像按钮和sendKeys()。