sendKeys不起作用时如何在Selenium中上传文件

时间:2019-02-14 20:14:35

标签: javascript java selenium

HTML代码的类型为shadow DOM。

这是输入类型:

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

console screenshot

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您需要使用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());

注意:文件路径应该是绝对的。您可以通过以下方式实现:

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