2011-01-12 78 views
3

我是usinng 硒2測試版。我試圖點擊打開文件附件對話框的按鈕。但是當我點擊它時沒有任何反應。不能點擊按鈕,打開文件附件對話框

<input class="zf" name="Passport" id="PassportUpload" type="file" onclick="return { oRequired : {} }" maxlength="524288"> 


driver.findElement(By.name("Passport")).click(); 

只使用硒而不是硒2我可以很容易地點擊它。

回答

1

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

也許嘗試下面的代碼:

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(); 
} 
相關問題