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

Фотография

Проблема снятия скриншота при UnhandledAlertException

UnhandledAlertException

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

#1 Dmitry2017

Dmitry2017

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

  • Members
  • Pip
  • 14 сообщений
  • ФИО:Дмитрий Витальевич


Отправлено 25 июля 2019 - 13:35

Доброго времени суток! Подскажите, пожалуйста. При возникновении в тесте исключения UnhandledAlertException почему-то не может успешно отработать метод создания скриншота. Сам тест навечно повисает (в среде разработки выводится статус Stopped). При ловле других ошибок скриншот создается, тест не повисает, а штатно падает.

Автотесты построены на Java + Selenium + TestNG.

Каким путем можно решить эту проблему?

 

Метод снятия скриншота подключаю так:

 

import org.testng.ITestContext;

import org.testng.annotations.*;

 

 

@Listeners(MyTestListener.class)

public class TestBase {

  protected final ApplicationManager app = new ApplicationManager(System.getProperty("browser", BrowserType.CHROME));

 

  @BeforeTest

  public void setUp(ITestContext context) throws Exception {

    app.init();

    context.setAttribute("app", app);

  }

 

  @BeforeClass()

  public void classRefresh(){

    app.refreshPageObject();

  }

 

  @AfterTest

  public void tearDown() {

    app.stop();

  }

}


  • 0

#2 TatyanaV

TatyanaV

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

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


Отправлено 26 июля 2019 - 06:38

Можно в лог выводить текст алерта, а потом закрывать его и фоткать страницу.


  • 0

#3 Dmitry2017

Dmitry2017

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

  • Members
  • Pip
  • 14 сообщений
  • ФИО:Дмитрий Витальевич


Отправлено 29 июля 2019 - 09:13

Можно в лог выводить текст алерта, а потом закрывать его и фоткать страницу.

Татьяна, спасибо за стремление помочь! А Вы в своей практике сталкивались с такой проблемой?

Просто я пытался добавить метод закрытия алерта, но как раз в этом и оказалась проблема. Моя программа (автотест) не передает управление методу закрытия алерта. Хотя я и завернул основной код теста (в котором ловится баг) в try, а закрытие алерта поместил в catch (UnhandledAlertException e). Почему-то выполнение не доходит до catch.


  • 0

#4 TatyanaV

TatyanaV

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

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


Отправлено 30 июля 2019 - 07:05

Да, сталкивалась, решаю именно указанным мною способом.

Как вариант - пройтись дебаггером, чтобы четко отловить, на какой конкретно строчке "падает", почему не попадает в catch (может там не UnhandledAlertException, а какой-то другой эксепшн тест фейлит).

Ещё вариант, сделать catch (Exception e) и там первым делом выводить e.printStackTrace() (самостоятельно выведет в лог) или e.getLocalizedMessage() (просто текст, выводить в лог надо вручную).


  • 0

#5 rlabs

rlabs

    Специалист

  • Members
  • PipPipPipPipPip
  • 660 сообщений
  • Город:Россия, Санкт-Петербург

Отправлено 01 августа 2019 - 05:22

Доброго времени суток! Подскажите, пожалуйста. При возникновении в тесте исключения UnhandledAlertException почему-то не может успешно отработать метод создания скриншота.

 

в приведенном примере нет ни кода снятия скриншота, ни кода теста. Как решить эту проблему? показать код.


  • 0

#6 Dmitry2017

Dmitry2017

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

  • Members
  • Pip
  • 14 сообщений
  • ФИО:Дмитрий Витальевич


Отправлено 01 августа 2019 - 14:01

Да, сталкивалась, решаю именно указанным мною способом.

Как вариант - пройтись дебаггером, чтобы четко отловить, на какой конкретно строчке "падает", почему не попадает в catch (может там не UnhandledAlertException, а какой-то другой эксепшн тест фейлит).

Ещё вариант, сделать catch (Exception e) и там первым делом выводить e.printStackTrace() (самостоятельно выведет в лог) или e.getLocalizedMessage() (просто текст, выводить в лог надо вручную).

Татьяна, большое спасибо!

Проблему решил, вставив закрытие алерта непосредственно перед снятием скриншота.

Тут, конечно, минус в том, что алерт не попадает в скриншот, но хотя бы тестовый набор продолжает выполняться дальше.


  • 0

#7 TatyanaV

TatyanaV

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

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


Отправлено 02 августа 2019 - 07:10

 

Да, сталкивалась, решаю именно указанным мною способом.

Как вариант - пройтись дебаггером, чтобы четко отловить, на какой конкретно строчке "падает", почему не попадает в catch (может там не UnhandledAlertException, а какой-то другой эксепшн тест фейлит).

Ещё вариант, сделать catch (Exception e) и там первым делом выводить e.printStackTrace() (самостоятельно выведет в лог) или e.getLocalizedMessage() (просто текст, выводить в лог надо вручную).

Татьяна, большое спасибо!

Проблему решил, вставив закрытие алерта непосредственно перед снятием скриншота.

Тут, конечно, минус в том, что алерт не попадает в скриншот, но хотя бы тестовый набор продолжает выполняться дальше.

Так я ж написала - текст алерта Вы можете получить и вывести в лог перед тем, как его закрывать. Не будет его на скрине, но зато текст алерта Вы все равно будете в логах видеть.


  • 0


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

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