当sendKeys不工作时,如何在Selenium中上传文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当sendKeys不工作时,如何在Selenium中上传文件相关的知识,希望对你有一定的参考价值。

html代码的类型为shadow DOM。

这是输入类型:

<input hidden type="file" id="fileInput" accept=".doc,.docx,.pdf,.jpg,.png">

console screenshot

答案

您可以尝试通过执行javascript脚本,使用Selenium中的JavaScriptExecutor来隐藏此元素。我在我的项目中做了这种事情,因为在IE中SendKeys也没有用于隐藏输入。

另一答案

您需要使用JS使输入可见。完整步骤如下所述:

// Find file input element
WebElement input = driver.findElement(By.cssSelector("input[type='file']"));

// Make sure element is visible
((JavascriptExecutor) driver).executeScript("arguments[0].style.display = 'block';", input);

// Specify you local file path here
input.sendKeys("/path/to/file/on/machine/which/runs/tests");

如果是RemoteDriver,请不要忘记添加:

// Configure your client to upload local files to remote Selenium instance
    driver.setFileDetector(new LocalFileDetector());

注意:filepath应该是绝对的。你可以这样做:

String getFilePath(String filePath) {
    new File(filePath).absolutePath
}

以上是关于当sendKeys不工作时,如何在Selenium中上传文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在Selenium中使用sendKeys()方法传递一个arraylist

Python Selenium 文件上传

selenium+python自动化79-文件下载(SendKeys)

selenium+python自动化79-文件下载(SendKeys)转载

Selenium 网格执行 - 如何使用 sendkeys 将多个文件一起(一次)上传到网页

硒发送键不起作用