Firefox Gecko驱动程序无法单击类型为“文件”的输入元素

时间:2018-09-19 17:49:54

标签: java selenium testng selenium-firefoxdriver

我正在所有浏览器中使用两个文件上传按钮来自动化页面。这是代码段:

WebElement thumbnailClick = driver.findElement(By.id("PageForm_tile_src"));
jse.executeScript("scroll(0, 250)");
thumbnailClick.click();

这是单击第一个上传按钮的按钮,在Chrome浏览器中效果很好,但是尝试在Firefox壁虎驱动程序上运行会抛出InvalidArgumentException: Cannot click <input type=file> elements错误

我必须按ID查找这些元素,因为此页面上有多个上传按钮。为什么firefox可以轻松手动完成并在其他任何浏览器上运行,为什么会拒绝此点击?

添加元素的HTML:

<input name="PageForm[tile_src]" id="PageForm_tile_src" type="file">

1 个答案:

答案 0 :(得分:3)

Firefox(通过geckodriver)在此处运行正常,而Chrome在运行不正常。 W3C WebDriver Specification在其对Element Click algorithm in Section 14.1的描述中指出:“如果元素是文件上载状态为 1 的输入元素,则返回错误,错误码为无效参数。”

Chromium团队完成chromedriver的规范合规性后,将表现为geckodriver,IEDriverServer.exe,Microsoft Edge驱动程序的当前预览版以及Apple刚刚发布的Safari 12驱动程序。

要使用WebDriver成功上传文件,应使用sendKeys方法以及要上传文件的完整路径。

1 Ed。注意:“处于文件上传状态”是<input type="file">元素的规范语言。