我猜这个问题只出在使用 Internet Explorer 时,因为 IE 和 FF 处理文件输入略有不同:在 FF 中,您可以单击按钮或字段来调用“打开”对话框,而在 IE 中,您可以单击按钮或双击-单击该字段。
WebDriver 使用本机事件,因此它将本机鼠标单击发送到文件输入控件,该控件被转换为对输入字段的单击。
它在 Selenium 1 中工作,因为它使用 JavaScript 来触发事件。要使其在 WebDriver 中工作,您需要调用 JavaScript:
WebElement upload = driver.findElement(By.name("Passport"));
((JavascriptExecutor)driver).executeScript("arguments[0].click();", upload);
但是上面的代码不会在 Firefox 中,所以你可以使用类似的东西:
WebElement upload = driver.findElement(By.name("Passport"));
if (driver instanceof InternetExplorerDriver) {
((JavascriptExecutor)driver).executeScript("arguments[0].click();", upload);
} else {
upload.click();
}