kippen Klick-Taste des Dialogdateianhang öffnet
-
10-10-2019 - |
Frage
ich bin usinng Selen 2 beta ??strong>. Ich versuche zu klicken, die Dateianhang Dialog öffnet sich. aber wenn ich klicken, um es passiert nichts.
<input class="zf" name="Passport" id="PassportUpload" type="file" onclick="return { oRequired : {} }" maxlength="524288">
driver.findElement(By.name("Passport")).click();
mit nur Selen nicht Selen 2 i kann es leicht klicken.
Lösung
Ich denke, dass das Problem nur, wenn da IE Internet Explorer verwenden und FF behandelt der Dateieingabe etwas anders: in FF können Sie auf die Schaltfläche klicken oder das Feld, um das Öffnen-Dialog aufrufen, während in IE Sie auf die Schaltfläche können Taste oder Doppelklick auf auf dem Feld.
WebDriver mit nativen Ereignissen so ist es eine native Mausklick auf die Datei-Eingabesteuerung sendet, die mit dem Klick auf dem Eingabefeld übersetzt wird.
Es wurde in Selen 1 zu arbeiten, weil es die JavaScript verwendet, die Ereignisse zu feuern. Um es in WebDriver arbeiten müssen Sie die JavaScript aufzurufen:
WebElement upload = driver.findElement(By.name("Passport"));
((JavascriptExecutor)driver).executeScript("arguments[0].click();", upload);
Doch der Code abouve wird nicht in Firefox, so dass Sie so etwas wie verwenden können:
WebElement upload = driver.findElement(By.name("Passport"));
if (driver instanceof InternetExplorerDriver) {
((JavascriptExecutor)driver).executeScript("arguments[0].click();", upload);
} else {
upload.click();
}
Andere Tipps
vielleicht folgender Code versuchen:
WebElement upload = driver.findElement(By.name("Passport"));
if (driver instanceof InternetExplorerDriver) {
((JavascriptExecutor)driver).executeScript("arguments[0].click();", upload);
} else if (driver instanceof FirefoxDriver) {
((JavascriptExecutor)driver).executeScript("arguments[0].click;", upload);
}else {
upload.click();
}