无法单击按钮,打开文件附件对话框

时间:2011-01-12 09:22:11

标签: selenium automated-tests webdriver selenium-webdriver

我正在使用 selenium 2 beta 。我正在尝试单击打开文件附件对话框的按钮。但是当我点击它时没有任何反应。

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


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

仅使用硒而不是硒2我可以轻松点击它。

2 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分: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();
}