我想問題是隻有當使用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();
}