Объект диалога

Во время работы с приложением иногда возникают диалоговые окна, требующие отклика от пользователя. Библиотека имеет поддержку диалогов.

Рассмотрим случай, когда нам необходимо создать новую запись, а затем отказаться от её сохранения. Известно, что после отказа появится подтверждающий диалог, где нужно нажать кнопку “Нет”.

Вот как может выглядеть соответствующий фрагмент кода:

Создание записи и отказ от её сохранения
String SELECTION_NAME = "gtk-ru.bitec.app.gs3.qa.form.open_card_type.Gs3_QAReferenceMdiCard";

application.mainForm().mainMenu().itemByCaption("Формы", "Справочник с MDI-карточкой").click();
Form listForm = application.waitMdiForm(SELECTION_NAME, "List");     // (1)

listForm.mainSelection().layout().frame().toolbar().buttonByCaption("Создать").click();
Form cardForm = application.waitMdiForm(SELECTION_NAME, "Card");     // (2)

cardForm.mainSelection().layout().frame().toolbar().button(StandardOperations.CLOSE_FORM_CANCEL).click(); // (3)

MsgDialog dialog = MsgDialog.wait(application.getBrowserContext());  // (4)

dialog.no();                                                         // (5)

Описание:

  1. Открывается выборка.

  2. Открывается карточка новой записи.

  3. Закрывается карточка новой записи с отказом от сохранения.

  4. Ожидается появление диалогового окна.

  5. Выполняется клик левой кнопкой мышки в кнопку “Нет” на диалоге.

Объект типа MsgDialog содержит методы для взаимодействия с любыми кнопками диалогов, позволяя не только реагировать на стандартные диалоги, но и поддерживать кастомные варианты.

Текст сообщения диалога

Текст сообщения диалога возвращает метод text(). Так, рассмотренный выше сценарий закрытия карточки можно дополнить проверкой того, что появился именно диалог подтверждения сохранения:

Проверка текста диалога
MsgDialog dialog = MsgDialog.wait(application.getBrowserContext());

Assertions.assertEquals("Сохранить изменения?", dialog.text());

dialog.no();

Метод самостоятельно дожидается видимости текста (сообщение диалога появляется с анимацией), поэтому дополнительные ожидания в тесте не требуются. Если у диалога нет текста, метод бросает ElementNotFoundException. Метод доступен и для диалога ошибки сервера ErrorDialog.

Полный пример проекта example6 можно найти в коллекции примеров проектов.

See also