一尘不染

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

selenium

我正在使用 selenium2 beta 。我试图单击按钮,这将打开文件附件对话框。但是当我单击它时,什么也没有发生。

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


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

仅使用selenium而不是selenium2我可以轻松单击它。


阅读 260

收藏
2020-06-26

共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);

但是,以上代码不会在Firefox中使用,因此您可以使用以下代码:

WebElement upload = driver.findElement(By.name("Passport"));
if (driver instanceof InternetExplorerDriver) {
    ((JavascriptExecutor)driver).executeScript("arguments[0].click();", upload);
} else {
    upload.click();
}
2020-06-26