не могу нажать кнопку, которая открывает диалог прикрепления файла - PullRequest
3 голосов
/ 12 января 2011

я использую селен 2 бета .Я пытаюсь нажать кнопку, которая открывает диалоговое окно вложения файла.но когда я нажимаю, ничего не происходит.

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


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

используя только селен, а не селен 2, я могу легко щелкнуть по нему.

Ответы [ 2 ]

1 голос
/ 12 января 2011

Я полагаю, что проблема возникает только при использовании 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();
}
0 голосов
/ 14 октября 2011

возможно попробуйте следующий код:

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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...