我正在使用Selenium 2-WebDriver处理文件选择器对话框。信不信由你,我的问题不是与OS本地文件选择器打交道。我可以处理的那部分!

问题是让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中的每个操作系统和浏览器。

    10-06 05:13
    查看更多