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

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


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">


慕斯王
浏览 234回答 1
1回答

红糖糍粑

Firefox(通过 geckodriver)在这里运行正常,而 Chrome 则没有。的W3C规范的webdriver,在其所述的描述在第14.1节元素点击算法,步骤3中指出:“如果该元素是在文件上传状态的输入元件1,与错误代码无效的参数返回错误”当 Chromium 团队完成 chromedriver 的规范合规性时,它的行为将与 geckodriver、IEDriverServer.exe、Microsoft Edge 驱动程序实现的当前预览版本以及 Apple 刚刚发布的 Safari 12 驱动程序实现相同。要使用 WebDriver 成功上传文件,您应该使用sendKeys带有要上传文件的完整路径的方法。1版。注意:“处于文件上传状态”是<input type="file">元素的规范语言。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java