При написании тестов с использованием Selenium WebDriver + C# + Nunit прописываю в коде методы обработки модальных окон, которые появляются на страницах тестируемого сервиса. ChromeDriver отрабатывает тесты замечательно. Меняю настройки тестов на использование FirefoxDriver и при прохождении тестов сразу получаю ошибку. В ошибке говорится, что не находим всплывающих окон. Как так? Запускаю тесты и внимательно наблюдаю за процессом. Модальные окна появляются и быстро исчезают. Почему?
Начал изучать вопрос и выяснил, что Webdriver для Firefox по умолчанию обрабатывает и закрывает все модальные окна (отменяет их). Как итог в коде дело до модальных окон не доходит. Мне необходимо в некоторых тестах подтверждать, а не отменять окна, также удобнее во многих тестах управлять самому модальными окнами, чтобы контролировать происходящее.
В итоге было найдено решение, которым делюсь с вами. Если используете FirefoxDriver, то вам необходимо чётко указать, что делать с модальными окнами.
Подключаем:
using OpenQA.Selenium.Remote;
Объявляем в [TestFixture ()]:
public static IWebDriver driver; // public static так как используется мной в других CS-файлах
В [TestFixtureSetUp] пишем:
DesiredCapabilities cap = new DesiredCapabilities (); cap.SetCapability (CapabilityType.UnexpectedAlertBehavior, "ignore"); driver = new FirefoxDriver (cap);
ignore — игнорировать окна (так как сами будем решать, что с ними делать, прописывая поведение в коде).
accept — автоматически принимать окна (нажатие на ОК).
dismiss — автоматически отклонять окна (нажатие на ОТМЕНА), это использует FirefoxDriver по умолчанию.
Используя «accept» или «dismiss» вы не сможете самостоятельно обрабатывать модальные окна.