2012-05-29 5 views
3

Я разработал тестовое подразделение с Selenium 2 на Java, которое использует движок Firefox.Selenium Firefox Webdriver в Java (параметры запуска)

У машины развертывания нет дисплея, поэтому я использую Xvfb для его создания. К сожалению, это заставляет меня запустить java, используя DISPLAY=:0 java -jar xxx.jar. Я искал selenium javadoc и искал некоторые источники, но не могу найти метод, который использует java для запуска Firefox, ведь это моя цель, создавая java-запуск firefox с использованием того же метода DISPLAY=:0 firefox ....

Короче говоря: я должен делать DISPLAY=:0 java -jar xxx.jar, но я хочу, чтобы сделать Java DISPLAY=:XX firefox ... вместо firefox ... поэтому я также использовать несколько мониторов.

Любые советы?

+0

Я не знаю ответа, но из любопытства: Как это вести себя, когда вы запускаете его «нормально»? Думаю, вы считали [HtmlUnitDriver] (http://code.google.com/p/selenium/wiki/HtmlUnitDriver), правильно? –

+2

Я хочу «реального» браузера, поэтому HtmlUnitDriver терпит неудачу (js). Он ведет себя как обычный дисплей, я даже могу сделать скриншоты и посмотреть, как он выглядит. Так что в основном это обычный дисплей. – Ciro

ответ

4

Мы фактически используем Xvfb и Selenium в производстве с дюжиной экземпляров Firefox, которые работают непрерывно. Мы используем xvfb-run java -jar xxx.jar, которые выбирают бесплатный экран для запуска всех экземпляров firefox для этой программы. Если скриншот вас беспокоит, вы можете использовать только один дисплей и все еще иметь дюжину Firefox, делающих скриншоты для разных сайтов одновременно.

Мы завернули это под сценарий оболочки, и это прозрачно.

Если вы действительно хотите, чтобы каждый сервер selenium имел свой экран, вы можете перезаписать его в строке браузера, указанной в конфигурации. просто создайте сценарий оболочки, который делает xvfb-run /usr/bin/firefox и передайте этот скрипт в вашу конфигурацию. Это должно сделать трюк

Хорошего тестирование

+0

, вероятно, реализуя ваш ответ, спасибо за совет. – Ciro

0

Вы должны смотреть в это руководство, я использовал это некоторое время назад, чтобы делать то же самое:

http://www.alittlemadness.com/2008/03/05/running-selenium-headless/

TLDR;

$ export DISPLAY=:0 
$ firefox 
+0

Я отредактировал свой вопрос. Несмотря на ваш ответ, решает мою оригинальную проблему, которую я хочу выбрать, в java, которая будет отображаться для использования. – Ciro

+0

@Ciro Sooo, ['Runtime.exec()'] (http://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html#exec%28java.lang.String%29) динамический вызов требуемых команд не является опцией? (нет, я до сих пор не понимаю большинства вещей ни в вопросе, ни в ответе) –

+0

Не думайте так, это библиотека селена, которая запускает и управляет открытым браузером. – Ciro

2

Мы создали файл bash, который устанавливает отображение, а затем запускает firefox. Мы поместили его в путь под названием firefox, поэтому селен находит его с помощью which , чтобы найти двоичный файл firefox.

2

Напишите программу «прокси», которая выполняет оболочку с требуемыми параметрами; затем укажите свойство «webdriver.firefox.bin» в вашей прокси-программе. Я не думаю, что это может быть java-программа, потому что она выполняется через java-команду. Вероятно, это должен быть собственный код, возможно, C и что-то вроде «system (« DISPLAY =: XX firefox ... »);

+0

почти как правильный ответ, но лучше использовать сценарий оболочки. Спасибо за идею. – Ciro

Смежные вопросы