Как заставить Firefox быть приоритетным приложением при тестировании с Selenium на Mac OS X - PullRequest
10 голосов
/ 25 октября 2011

Недавно мы начали тестировать наше приложение на основе Django с использованием Selenium.Тесты работают нормально в Linux, но некоторые не работают на Mac OS X. Мы используем Firefox в качестве браузера в обоих случаях, и нам потребовалось некоторое время (и немного удачи), чтобы выяснить, что важное различие между этими двумя случаями заключается в том,FF работает как приложение переднего плана или как фоновое окно.Вот что происходит в Linux:

  1. Selenium указывает Firefox перейти на страницу регистрации пользователя.
  2. Selenium заполняет имя пользователя и неверный адрес электронной почты.
  3. Selenium меняет фокус с поля адреса электронной почты на другое поле на той же странице (это окно поиска, но это не важно - все, что имеет значение, это событие смены фокуса).
  4. Код проверки Javascript на веб-странице замечает, что адрес электронной почты является недействительным, и вставляет сообщение об ошибке на странице.
  5. Selenium обнаруживает это сообщение об ошибке и отмечает тест как пройденный.

Однако, когда мы работаем в Mac OS X, шаг № 4 не выполняется , если только мы вручную не открываем окно Firefox во время выполнения теста - если мы оставляем его вВ фоновом режиме (где он появляется по умолчанию), Javascript в браузере не получает событие изменения фокуса, поэтому сообщение об ошибке никогда не вставляется в DOM страницы, поэтому Selenium tя ожидаю его, и тест не пройден.

Можем ли мы заставить Selenium запускать браузер на переднем плане при запуске тестов, чтобы наш Javascript получал события так, как мы этого хотим?Если да, то как?

1 Ответ

2 голосов
/ 01 января 2012

Selenium управляет браузером через Javascript. Нет возможности управлять окном браузера через JS. В общем, тестирование событий onfocus и onblur в Selenium очень сложно.

Вы можете попробовать запустить это событие самостоятельно, выполнив оценку JS с использованием методов Selenium 'runScript' или 'getEval' после ввода неверного адреса электронной почты. Это не «чистое» тестирование черного ящика, т. Е. Ваш тест необходимо изменить, если реализация проверки была изменена, но это наиболее реальный способ выполнить этот тест.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...