selenium - 如何使用 Selenium Webdriver 跨浏览器点击<input type=file>?

标签 selenium webdriver

我正在使用 Selenium 2 - WebDriver 处理文件选择器对话框。不管你相信与否,我的问题不是处理操作系统 native 文件选择器。这部分我可以处理!

问题是让 Selenium 正确单击“选择文件”按钮。由于原始源 html 很简单 <input type='file'> ,浏览器决定如何将其呈现为字段和按钮。因此,按钮的位置和命名会根据浏览器的不同而变化。我可以在 Chrome 中使用它,但这只是因为 Chrome 将按钮放在最左边的对齐方式上,而 Selenium 默认情况下恰好单击那里。

有什么想法吗?我不清楚这种类型的输入是否真的可以从 DOM 内导航......

最佳答案

在任何操作系统上上传文件的正确方法是

  1. 查找<input type='file'>元素。您无需担心不同的实现和精确定位。只需通过 xpath //input[@type='file'] 查找元素即可
  2. sendKeys()type() (或者以您的语言将文本写入元素的任何方法)该输入元素的文件路径。

示例 Java 代码:

// find the input element
WebElement elem = driver.findElement(By.xpath("//input[@type='file']"));
// 'type' the file location to it as it were a usual <input type='text' /> element
elem.sendKeys("C://path/To/File.jpg");

这适用于 WebDriver 中的每个操作系统和浏览器。

关于selenium - 如何使用 Selenium Webdriver 跨浏览器点击&lt;input type=file>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9726005/

相关文章:

java - 如何使用属性 'display:none' 获取 XPath 的 getText()

python - 如何使用 Python 绑定(bind)在 Selenium Webdriver 中使用 Safari 浏览器

c# - 仅使用 c# selenium 在元素的子元素中通过 xpath 查找

javascript - 如果测试是用 Java 或 Javascript 编写的,selenium 端到端测试会运行得更快吗?

python - 获取上次下载文件的下载链接 - Selenium

python - 输入文本以跨越 Selenium/Python

selenium - Selenium IDE、Server、RC、2.0 和 WebDriver 之间有什么区别?

java - Selenium java无法获取html文本

java - 尝试使用已编译的 JavaFX 应用程序运行 Webdriver

java - 如何使用java单击链接时打开新窗口