Javascript 当元素为';显示:无';,如何上载图像文件?
我想通过Selenium上传一个文件。 页面url如下所示Javascript 当元素为';显示:无';,如何上载图像文件?,javascript,java,selenium,Javascript,Java,Selenium,我想通过Selenium上传一个文件。 页面url如下所示 <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>
<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>
我得到了这样的错误:
Element is not currently visible and so may not be interacted with
Command duration or timeout: 24 milliseconds
如何上载图像文件?我不确定这是否有效,但您可以删除“样式”属性
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");
我用这个代码解决了这个问题。 它是删除显示:无表单输入元素
// Remove display : none
// JavascriptExecutor js = (JavascriptExecutor) driver;
// js.executeScript("$(\"input[type='file']\").css('display','')");
然后出现选择图像按钮和sendKeys() 当您单击某个选项时,它是否总是隐藏或出现文件上载选项?另一件事是如何手动上载文件?如果在webdirver代码中的这一行执行之前手动删除此
样式属性会发生什么情况,这是否解决了问题?谢谢您的回复。我试过密码,但我犯了这个错误。org.openqa.selenium.webdrivexception:args未定义命令持续时间或超时:11毫秒这是一个输入错误,我已修复,现在应该可以工作了。非常感谢!现在Selenium可以上传图像文件了!!※注:第一行需要->;请注意,如果目标是测试功能,则取消隐藏
将无法达到测试目的。更好的方法是使用脚本注入覆盖单击
,以避免对话。然后单击应取消隐藏
的区域,并调用sendKeys
设置文件。
// Remove display : none
// JavascriptExecutor js = (JavascriptExecutor) driver;
// js.executeScript("$(\"input[type='file']\").css('display','')");