我正在所有浏览器中使用两个文件上传按钮来自动化页面。这是代码段:
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">
答案 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">
元素的规范语言。