Firefox Gecko驱动程序无法单击类型为“file”的input元素

问题描述 投票:0回答:1

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

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

这是点击第一个上传按钮,这在Chrome中完美运行,但尝试在Firefox gecko驱动程序上运行会引发InvalidArgumentException: Cannot click <input type=file> elements错误

我必须通过id找到这些元素,因为此页面上有多个上传按钮。为什么firefox会在手动操作并且可以在任何其他浏览器上运行时拒绝此点击?

添加元素的HTML:

<input name="PageForm[tile_src]" id="PageForm_tile_src" type="file">
java selenium testng selenium-firefoxdriver
1个回答
3
投票

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

当Chromium团队为chromedriver完成规范兼容性时,它将表现为geckodriver,IEDriverServer.exe,即用于Edge的Microsoft驱动程序实现的当前预览版本,而Apple刚刚发布的Safari 12驱动程序实现都表现得很好。

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

1ED。注意:“在文件上载状态”是<input type="file">元素的spec语言。

© www.soinside.com 2019 - 2024. All rights reserved.