Неожиданный alert ломает тесты и не попадает в общие результаты
#1
Отправлено 09 сентября 2015 - 06:02
#2
Отправлено 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(<текст ваш>)".
Это не избавит от необходимости выяснить, почему алерт появился там, где вы его не ждете (может это баг того ПО, которое вы тестируете? или просто тест не доделан), но хотя бы не будет мешать дальнейшему выполнению остальных тестов.
#3
Отправлено 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, а потом выполняется закрытие бразера. Т.к. алерт не закрыт, то скриншот снять нельзя, соответственно тест не проходит до конца и никуда не попадает.
Темы с аналогичным тегами alert, webdriver, jar, java, testNG
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных