При написании тестов с использованием 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» вы не сможете самостоятельно обрабатывать модальные окна.