Предупреждение отсутствует / Модальное диалоговое окно не найдено - WebDriver не может отловить ошибку JS - PullRequest
0 голосов
/ 11 октября 2011

Я автоматизирую тест на основе форм «Добавить сотрудника» для нашей производственной площадки.Когда вводится идентификатор, или электронное письмо, или имя, которое уже существует, появляется служебная ошибка, которая показывает, что сотрудник не может быть зарегистрирован.Несмотря на то, что это окно появляется, тест проходит :(. Я попытался использовать функцию driver.switchTo (). Alert () в моем коде. Вот что произошло:

Alert alert=driver.switchTo().alert();
String text=alert.getText();
System.out.println(text);

с Firefox 7 + SeleniumWebDriver 2.8.0:

org.openqa.selenium.NoAlertPresentException: No alert is present (WARNING: The server did not provide any stacktrace information); duration or timeout: 2.11 seconds
    Build info: version: '2.8.0', revision: '14056', time: '2011-10-06 12:41:48'
    System info: os.name: 'Linux', os.arch: 'amd64', os.version: '2.6.37.6-0.7-desktop', java.version: '1.6.0_26'
    Driver info: driver.version: RemoteWebDriver

С Chrome + Web Driver:

[1011/131949:ERROR:automation_json_requests.cc(59)] JSON request failed: GetAppModalDialogMessage
    with error: No modal dialog is showing

Снимок ошибки: When the employee already exists

Вопрос:

Хорошо, если я не получу текст диалога. Это единственное предупреждение, которое появится. Итак, знание того, что предупреждение появилось, решит мою проблему. Но обе вещи говорят, что предупреждения нет /существует модальное диалоговое окно :(

Спасибо.

РЕДАКТИРОВАТЬ: Я также пытался это:

Selenium selenium=new WebDriverBackedSelenium(driver,baseUrl);
System.out.println(selenium.isAlertPresent());

Это выдало false. Разве это не окно предупреждения? Разве это неили модальное диалоговое окно? Если это не какая-то из этих вещей, как мне найти его присутствие на странице?

Ответы [ 2 ]

2 голосов
/ 11 ноября 2011

Часто случается, что код Selenium выполняется до того, как браузер выдает предупреждение.Я склонен делать что-то вроде этого:

Alert getAlert() {
    try {
        Alert alert = driver.switchTo().alert();
        return alert;
    } catch (NoAlertPresentException e) {
        // no alert to dismiss, so return null
        return null;
    }
}

Я не думаю, что это идеально, но я не знаю лучшего пути в Selenium в данный момент.Я склонен вызывать это вслепую из моих тестов через регулярные промежутки времени, и если он выдаст предупреждение, я просто отклоню его.Если вы ожидаете оповещения от своего приложения и хотите отклонить его, прежде чем продолжить, поместите его в цикл while.

0 голосов
/ 20 мая 2017

Я также столкнулся с той же проблемой с диалоговым окном модели.

Что вам нужно сделать, это найти xpath of ok buttion и продолжить.

Я сделал то же самое и успешно сделалit.

Найдите веб-элемент и подождите между веб-элементом и нажатием кнопки «ОК».

Не используйте такие оповещения, как driver.switchto.alert.accept();.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...