До этого RC вручную запускался вручную либо непосредственно на сервере (DISPLAY :0) либо вручную же через vnc. После перезагрузки сервера или из-за пока неустановленных редких сбоев в самом RC процесс автоматического тестирования нарушался. Для решения проблемы было решено добавить запуск Selenium RC в cron.
В crontab была добавлена соответствующая строчка, запускающая RC-сервер. В этот момент не было учтено , что firefox оконное приложение и требует возможности работать на конкретном дисплее =) Соответственно по крону RC-сервер стартовать не мог. Вернее сам-то сервер стартовал, но запустить X-овое приложение (firefox) без дисплея уже не мог.
Возник вопрос о том, о каком вообще дисплее может идти речь, если приложение запускается в ситуации отсутствия каких-либо X-сессий? На некоторое (короткое) время возможность запуска X-программ из под cron была поставлена под сомнение, но довольно быстро было найдено решение.
В описанной ситуации можно использовать утилиту Xvfb, которая позволяет совершать графические операции в памяти и запускать "иксовые" приложения на виртуальных дисплеях.
Ниже привожу последовательность команд, решившая мою проблему:
Xvfb :1
export DISPLAY=:1
java -jar selenium-server.jar
Таким образом, если SeleniumRC будет запущен из-под cron описанным образом , то запускаемый им firefox будет запускаться на дисплее :1 и послушно выполнять все команды автотеста, с которого при желании можно даже снять скриншоты)
Надеюсь, данная информация кому-нибудь поможет и сэкономит время.
Отлично!
ОтветитьУдалитьА чем хуже было:
ОтветитьУдалитьexport DISPLAY=:0
java -jar selenium-server.jar
?
Ну кроме того, что оно может мельтишить окошками, если 0 дисплей - рабочий.
Это тоже пробовалось и это не работает ( в статье об этом не стал писать, но подобный вопрос предвидел)...
ОтветитьУдалитьВ описанной ситуации доступа к дисплею нет и при запуске firefox сервером , запущенным кроном, будет "ругань" : cannot open display :0
Допускаю, что это сработало бы, если бы активен рабочий дисплей :0 , то есть если бы была бы соответствующая авторизованная X-сессия. Но наличие такой сессии в момент работы автотестов никто не гарантирует )
Впрочем, можете попробовать сами.