Как справиться с авариями селена - PullRequest
6 голосов
/ 07 марта 2011

В настоящее время я автоматизирую тесты с селеном RC, которые проводятся каждый час.В большинстве случаев все идет гладко, но бывают случаи, когда либо Firefox аварийно завершает работу, либо селеновый RC просто зависает, и из-за этих двух проблем тестирование не продолжается и оно останавливается.Кто-нибудь знает, как я могу сделать так, чтобы firefox.exe и / или java.exe (экземпляр селена) были убиты при их аварийном завершении или зависании, поэтому тестирование можно возобновить.Проблемы, которые я вижу, обнаруживаются автоматически, когда Firefox или Selen зависает, и автоматически убивают их с помощью скрипта.

спасибо!

Ответы [ 2 ]

2 голосов
/ 17 июня 2011

В идеале каждый из ваших тестов должен начинаться с чистого состояния, когда не запущены существующие процессы Firefox или IE. В ваших тестовых методах tearDown () вы должны закрывать / закрывать свои браузеры. Даже при таком подходе иногда могут появляться скрытые процессы. Если вы запускаете свой сервер Selenium в Windows через Java RC, то добавление этой команды в метод startUp () ваших тестов может помочь убедиться, что браузеры / экземпляры не работают:

Runtime.getRuntime().exec("TASKKILL /F /IM Firefox.exe");
Runtime.getRuntime().exec("TASKKILL /F /IM iexplore.exe");

Что касается обнаружения сбоя, Firefox отобразит диалоговое окно с предупреждением о сбое. Вы можете программно взаимодействовать с этим окном с помощью внешних инструментов, таких как AutoIT, которые могут автоматически нажимать кнопку «ОК» в этом диалоговом окне, если вам нужно. Я обнаружил, что очень полезно создать внешний скрипт AutoIT, который постоянно работает в фоновом режиме для обработки всплывающих окон, сбоев, предупреждений и т. Д.

1 голос
/ 21 марта 2011

Не уверен, что у меня есть окончательный ответ для вас, но я могу предложить несколько идей:

  • У Selenium будет тайм-аут для борьбы с зависанием Firefox. Вы должны дважды проверить, чтобы убедиться, что он установлен правильно и работает.
  • Что бы ни запускал ваш селен (например, круиз-контроль или командный город), также должен быть тайм-аут, который может убить сервер селена.
  • Люди часто возвращаются к перезагрузке своих серверов один раз в день и сообщают о положительных результатах. (Не я)
  • Я бы очень хотел, чтобы вы выяснили причину этого. Селен может чувствовать себя расстраивающим и слабым, но после копания я всегда обнаруживал, что это была диагностируемая проблема, которую можно исправить (например, this ).

(Se подталкивает нас к ужасным крайностям: на самом деле мы написали ssh-задание, запущенное в TeamCity, которое подключилось к машине с Windows и перезапустило там сервер selenium. В конечном итоге мы его не использовали.)

...