Javascript 当元素为';显示:无';,如何上载图像文件?

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>

我想通过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>
    <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','')");