我正在使用 Selenium 2 - WebDriver 处理文件选择器对话框。不管你相信与否,我的问题不是处理操作系统 native 文件选择器。这部分我可以处理!
问题是让 Selenium 正确单击“选择文件”按钮。由于原始源 html 很简单 <input type='file'>
,浏览器决定如何将其呈现为字段和按钮。因此,按钮的位置和命名会根据浏览器的不同而变化。我可以在 Chrome 中使用它,但这只是因为 Chrome 将按钮放在最左边的对齐方式上,而 Selenium 默认情况下恰好单击那里。
有什么想法吗?我不清楚这种类型的输入是否真的可以从 DOM 内导航......
最佳答案
在任何操作系统上上传文件的正确方法是
- 查找
<input type='file'>
元素。您无需担心不同的实现和精确定位。只需通过 xpath//input[@type='file']
查找元素即可 -
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 跨浏览器点击<input type=file>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9726005/