2011-01-12 18 views
3

ich bin usinng Selen 2 Beta. Ich versuche auf die Schaltfläche zu klicken, die den Dateianhang-Dialog öffnet. aber wenn ich darauf klicke passiert nichts.kann nicht auf die Schaltfläche klicken, die Dateianhang Dialogfeld öffnet

<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 ich kann es leicht klicken.

Antwort

1

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(); 
} 
0

vielleicht versuchen folgenden Code:

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(); 
} 
Verwandte Themen