Ich denke, dass das Problem nur bei der Verwendung von Internet Explorer ist, da IE und FF die Dateieingabe etwas anders handhaben: in FF können Sie auf die Schaltfläche oder das Feld klicken, um das Öffnen-Dialogfeld aufzurufen, während Sie im IE klicken können die Taste oder doppelklicken Sie auf das Feld.
WebDriver verwendet native Ereignisse, sodass ein nativer Mausklick an das Dateieingabesteuerelement gesendet wird, das in den Klick auf das Eingabefeld übersetzt wird.
Es funktionierte in Selenium 1, weil es das JavaScript verwendet, um die Ereignisse auszulösen. Um es in WebDriver zu machen arbeiten müssen Sie die JavaScript aufzurufen:
WebElement upload = driver.findElement(By.name("Passport"));
((JavascriptExecutor)driver).executeScript("arguments[0].click();", upload);
jedoch der Code abouve nicht in Firefox, so dass Sie so etwas wie verwenden:
WebElement upload = driver.findElement(By.name("Passport"));
if (driver instanceof InternetExplorerDriver) {
((JavascriptExecutor)driver).executeScript("arguments[0].click();", upload);
} else {
upload.click();
}