2011-01-12 97 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(); 
}