Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

[Resolved] WebDriver Запуск браузера firefox под разными профилями


(Ninfea) #1

Добрый день!
Помоги, пожалуйста, может моя задача и не имеет решения.
Есть проект, тестирование которого должно производится на старой версии браузера FF. На удаленной машине установлено два браузера FF. Создан профиль, например, firefox23.
Запуск последней версии:

   "C:\Program Files\Mozilla Firefox\firefox.exe" -no-remote -p default

Запуск старой версии:

"C:\Program Files\Mozilla Firefox 23\firefox.exe" -no-remote -p firefox23

Хочу чтобы мои тесты запускались удаленно под браузером firefox23, пишу:

caps = DesiredCapabilities.firefox();
ProfilesIni allProfiles = new ProfilesIni();
FirefoxProfile profile = allProfiles.getProfile("firefox23");
caps.setCapability(FirefoxDriver.PROFILE, profile);

Но они все равно запускаются по дефолту.
Может для моей задачи этот способ не подходит?


Запуск firefox на удаленной машине с предустановленным профилем(selenium+testNG)
(Jane Tymoschuk) #2

при этом нужно в конструктор фаерфокса передать еще и путь к бинари

new FirefoxBinary(new File("C:\\Program Files\\Mozilla Firefox 23\\firefox.exe"))

при этом использовать конструктор

new FirefoxDriver(ffBinary, ffProfile)

(Ninfea) #3

я запускаю удалёный двайвер с помощью вот такой строки:

driver = new RemoteWebDriver(new URL(remote), caps);

Как и куда в этом случае передавать путь для Firefox. Меня смущает то что при запуске тестов, код

allProfiles.getProfile("firefox23");

пытается искать профиль firefox на моем локальном компьютере, а надо сделать что бы он искал его на удалённой машине где запущен selenium server


(Sergey Korol) #4

Не помню точно почему, но у меня в свое время эта конструкция тоже не работала с ремоутом ProfilesIni allProfiles = new ProfilesIni();. По-моему, проблема была в чтении локального профиля, а не ремоутного. В итоге, я остановился на варианте с хранением нужного профиля в проекте с последующей его установкой в качестве капабилити.

final FirefoxProfile profile = new FirefoxProfile(new File(path));
capability = DesiredCapabilities.firefox();
capability.setCapability(FirefoxDriver.PROFILE, profile);

Запуск firefox на удаленной машине с предустановленным профилем(selenium+testNG)
(Ninfea) #5

Я полностью скопировала профиль на локальный компьютер (в корневую папку моего проекта) и сделала как вы предложили, но удалённо всё равно запускается последняя версия браузера. Может быть есть способ указать для selenium-server-standalone где ему искать браузер старой версии. Код который не работает:

DesiredCapabilities caps;
final FirefoxProfile profile = new FirefoxProfile(new File("firefox23"));
caps = DesiredCapabilities.firefox();
caps.setCapability(FirefoxDriver.PROFILE, profile);
driver = new RemoteWebDriver(new URL(remote), caps);

(Ninfea) #6

Всем спасибо, проблема решилась вот так:

caps = DesiredCapabilities.firefox();
caps.setCapability(FirefoxDriver.BINARY, "C:\\Program Files\\Mozilla Firefox 23\\firefox.exe");