我想问题是只有当使用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);
然而代码abouve不会在Firefox中,这样你就可以使用类似:
WebElement upload = driver.findElement(By.name("Passport"));
if (driver instanceof InternetExplorerDriver) {
((JavascriptExecutor)driver).executeScript("arguments[0].click();", upload);
} else {
upload.click();
}