Перейти к содержимому

Фотография

Неожиданный alert ломает тесты и не попадает в общие результаты

alert webdriver jar java testNG

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1 Arch

Arch

    Новый участник

  • Members
  • Pip
  • 15 сообщений
  • ФИО:Каримов Алексей

Отправлено 09 сентября 2015 - 06:02

Окружение WebDriver+Java+TestNG
Тест запускается в виде jar архива.
 
Проблема следующая.
Если во время выполнения сценария в браузере появляется модальное окно (любой алерт), в общий лог падает ошибка unexpected alert open. Но в конце в таблице результатов это тест вовсе игнорируется, как будто он и не запускался 
(в таблице total run, on success, on failure, on skipped не попадает ни в одну категорию). Если тест не собирать в jar архив, то при запуске с maven ошибка попадает в общую таблицу. Но по ряду причин использовать maven не удается.
При большом количестве тестов, можно просто не заметить "пропажу".
Кто знает как можно бороться с этим?

  • 0

#2 TatyanaV

TatyanaV

    Опытный участник

  • Members
  • PipPipPipPip
  • 388 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 11 сентября 2015 - 11:37

Вы же делали уже такую тему?

Возможно дело в том, как именно вы запускаете свои тесты. (см. сообщение от Vad1m198)

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

 

Есть еще такой момент.

Когда запускается сразу набор тестов идущих друг за другом - неожидаемый алерт в одном из тестов (который вы никак не обработали) - можно помешать дальнейшему выполнению других тестов. Эти "другие" тесты = и будут отмечены как "не запускавшиеся".

Попробуйте где-нибудь в базовом классе, от которого у вас наследуются тестовые классы, добавить доп.проверку:

    @AfterMethod
    public void testEnd(ITestResult result) {
        checkAlert();
    }
	    
    public void checkAlert() {
        try {
            app.getDriver().switchTo().alert().accept();
            log.warn("Alert has been found and accepted.");
        } catch (NoAlertPresentException e) {}
    }

После каждого тест-метода будет вызываться проверка на наличие алерта. Если он вдруг найден - он будет подтверждаться. Если считаете, что что такой алерт у вас = ошибка, можно вместо подтверждения добавить "throw new Exception(<текст ваш>)".

Это не избавит от необходимости выяснить, почему алерт появился там, где вы его не ждете (может это баг того ПО, которое вы тестируете? или просто тест не доделан), но хотя бы не будет мешать дальнейшему выполнению остальных тестов.


  • 1

#3 Arch

Arch

    Новый участник

  • Members
  • Pip
  • 15 сообщений
  • ФИО:Каримов Алексей

Отправлено 14 сентября 2015 - 09:46

Вы же делали уже такую тему?

Возможно дело в том, как именно вы запускаете свои тесты. (см. сообщение от Vad1m198)

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

 

Есть еще такой момент.

Когда запускается сразу набор тестов идущих друг за другом - неожидаемый алерт в одном из тестов (который вы никак не обработали) - можно помешать дальнейшему выполнению других тестов. Эти "другие" тесты = и будут отмечены как "не запускавшиеся".

Попробуйте где-нибудь в базовом классе, от которого у вас наследуются тестовые классы, добавить доп.проверку:

    @AfterMethod
    public void testEnd(ITestResult result) {
        checkAlert();
    }
	    
    public void checkAlert() {
        try {
            app.getDriver().switchTo().alert().accept();
            log.warn("Alert has been found and accepted.");
        } catch (NoAlertPresentException e) {}
    }

После каждого тест-метода будет вызываться проверка на наличие алерта. Если он вдруг найден - он будет подтверждаться. Если считаете, что что такой алерт у вас = ошибка, можно вместо подтверждения добавить "throw new Exception(<текст ваш>)".

Это не избавит от необходимости выяснить, почему алерт появился там, где вы его не ждете (может это баг того ПО, которое вы тестируете? или просто тест не доделан), но хотя бы не будет мешать дальнейшему выполнению остальных тестов.

Спасибо. Ваша идея оказалось верной. Нужно после каждого теста в методе делать проверку на не закрытый алерт. Проблема была в том, что в методе который снимает скриншот, идет обращение к браузеру через driver, а потом выполняется закрытие бразера. Т.к. алерт не закрыт, то скриншот снять нельзя, соответственно тест не проходит до конца и никуда не попадает.


  • 0



Темы с аналогичным тегами alert, webdriver, jar, java, testNG

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных