Использование Selenium Server позволяет разделять запуск тестов и местоположение браузеров, в которых они выполняются. Это позволяет запускать тесты с браузерами, недоступными для текущей установленной ОС.
Для запуска теста на удаленной машине нужно запустить на ней сервер, который будет принимать по сети команды, запускать браузер и выполнять их. Предполагается, что Java на машине уже установлена.
Запуск сервера выполняется следующей командой:
java -jar selenium-server-standalone-****.jar
Последнюю версию selenium-server-standalone можно скачать здесь. Пакет selenium-server-standalone включает в себя хаб(центральный узел, который получает все запросы тестов), Selenium WebDriver и старый Selenium RC. По-умолчанию хаб запускается на 4444 порте. Для изменения порта можно добавить к команде необязательный параметр -port.
java -jar selenium-server-standalone-****.jar -port 5555
Для удаленного запуска WebDriver используется класс RemoteWebDriver
. Для настройки необходимых параметров запуска служит класс DesiredCapabilities
.
DesiredCapabilities capability = DesiredCapabilities.firefox(); capability.setBrowserName("firefox" ); capability.setPlatform(Platform.LINUX); capability.setVersion("3.6");
Не указанные характеристики просто игнорируются. Если указаны не существующие характеристики (например, отсутствует браузер с заданной версией), то тест не запустится.
URL hostURL = new URL("http://localhost:4444/wd/hub"); WebDriver driver = new RemoteWebDriver(hostURL, capability);
Для того, чтобы остановить сервер нужно в командной оболочке, где работает Selenium Server выполнить <Ctrl + C>.
Для завершения работы сервера из теста можно просто обратиться к url:
"http://localhost:4444/selenium-server/driver/?cmd=shutDownSeleniumServer"
К недостатками удаленного запуска тестов можно отнести дополнительные задержки во время выполнения, особенно когда возникают исключения. Вы также можете столкнуться с проблемой символов конца строки при получении текста с удаленного сервера.
А существует ли возможность как-нить объединить выше описанный способ с тем, что меняет профиль в мозилле:
ProfilesIni allProfiles = new ProfilesIni();
// PROFILE_NAME — имя профиля без указания пути, например, «default»
FirefoxProfile profile = allProfiles.getProfile(PROFILE_NAME);
driver = new FirefoxDriver(profile);
Чтоб на удаленном компе запускалась мозилла с нужным мне профилем (плагинами) ?
Конечно, например так: