Как использовать Selenium Grid для запуска некоторых команд на узле и системных команд локально

Я пытаюсь решить проблему, и я надеялся, что смогу сделать это с помощью Selenium Grid, но я не совсем уверен, что это возможно. Вот моя проблема... Я разрабатываю тестовые примеры с использованием Selenium WebDriver, и мне нужно, чтобы мои тесты запускались на компьютере с Windows, однако AUT работает на сервере Linux. У меня есть несколько инструментов, которые работают только в Linux, и я хотел бы иметь возможность запускать некоторые команды/тесты на компьютере с Windows, а другие — на сервере Linux. Например

  1. Тестовые запуски -> Запуск Firefox (машина с Windows)
  2. Вход на сайт (машина Windows)
  3. Выполнить команду на сервере Linux
  4. Верните запущенные команды/тесты в окно Windows.

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


person so cal cheesehead    schedule 15.01.2013    source источник


Ответы (1)


По умолчанию вы не можете использовать селен для запуска команд на вашем локальном компьютере. Selenium/Webdriver — это инструмент тестирования браузера, который может взаимодействовать только с браузером.

Обновленный ответ на основе ваших комментариев
Общая часть для обоих способов (которые, я думаю, вы уже знаете). В вашем Java-коде у вас должен быть код для команд webdriver/selenium, которые будут выполнять шаги 1 и 2. Ваш Java-код также должен содержат логику/код для выполнения команд Linux в качестве шага 3. Шаг 4 снова должен быть вашей командой веб-драйвера.
Этот тестовый код должен запускаться с сервера Linux, чтобы выполнение команды Java происходило в окне Linux.

Теперь единственная ожидающая часть — это выполнение теста на удаленной машине.

Способ 1 без использования сетки

Запустите сервер селена на компьютере с Windows. Направьте свои java-тесты на сервер селена, работающий на этой машине. Если IP-адрес вашего компьютера с Windows равен 10.0.0.1, вы должны инициализировать объект веб-драйвера как

WebDriver wd =  new RemoteWebDriver(new URL("http://10.0.0.1:4444/wd/hub"),DesiredCapabilities.Firefox());

Это отправит все ваши команды веб-драйвера на сервер selenium, работающий в 10.0.0.1 через порт 4444. Затем ваши тесты будут выполняться на компьютере с Windows. Чтобы это работало, ваш Linux-сервер и компьютер с Windows должны быть в одной сети.

Способ 2 с использованием сетки.

Все то же самое, что и выше, но вместо того, чтобы указывать имя ip/dns компьютера с Windows, вы должны указать имя ip/dns компьютера-концентратора. У вас также должна быть машина с Windows, зарегистрированная как RC для этого концентратора.

person A.J    schedule 15.01.2013
comment
Извините, позвольте мне уточнить. Я пишу свои тесты с использованием Java, поэтому я бы использовал Java для запуска необходимых мне системных команд. В частности, эти команды будут другим программным обеспечением для ввода данных в мое приложение. - person so cal cheesehead; 15.01.2013
comment
Ох, хорошо. Таким образом, вы хотите запустить команду селена в окнах из своей java-программы в качестве шага 1. Шаг 2 будет запускать команду java в вашем локальном поле, из которого выполняется тест (linux). Я прав? - person A.J; 15.01.2013
comment
В порядке. Тогда это вполне возможно сделать, я думаю. Есть несколько способов сделать это. Я обновлю свой ответ в ближайшее время с деталями. - person A.J; 15.01.2013
comment
Я обновил ответ. Надеюсь, я ответил на ваш вопрос. :). Если нет, дайте мне знать. - person A.J; 15.01.2013
comment
Я думаю, это сработает. Возможно, я неправильно понял, как работает Selenium Grid, но возможность сделать это без Grid — это довольно круто. Если я правильно понял, какой бы метод я ни выбрал, он будет работать, пока выполнение Java начинается в Linux, верно? Команды Selenium/WebDriver отправляются на удаленный WebDriver, а системные вызовы происходят локально? - person so cal cheesehead; 16.01.2013