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

HtmlUnitDriver с поддержкой javaScript и кастомным UserAgent

selenium
webdriver
java
Теги: #<Tag:0x00007f7b68d278b0> #<Tag:0x00007f7b68d274a0> #<Tag:0x00007f7b68d26e88>

(GorDi) #1

Приветствую.

Коллеги, нужна помощ в следующем вопросе:

Есть тесты, в которых используется FireFox с разными юзер агетами. Есть идея ускорить их работу заменив FireFox на HtmlUnit . Имеется реализация данной задумки:

BrowserVersion browserVersion = BrowserVersion.FIREFOX_38;
browserVersion.setUserAgent(userAgent);
HtmlUnitDriver driver = new HtmlUnitDriver(browserVersion);

По факту все работает - подмена юзер агента происходит, хтмл драйвер корректно обрабатывает джаваскрипт, но - при параллельном выполнении тестов, они падают из-за некоректных юзер агентов (скорее всего потому, что BrowserVersion.FIREFOX_38- статический и вызов метода browserVersion.setUserAgent(userAgent); изменяет юзер агент для всех хтмл драйверов…)

BrowserVersion browserVersion = BrowserVersion.FIREFOX_38; если не устанавливать версию хтмл драйвера таким способом, то падаю с org.openqa.selenium.WebDriverException: com.gargoylesoftware.htmlunit.ScriptException даже если после инициализации драйвера вызываю driver.setJavascriptEnabled(true);

ПОДСКАЖИТЕ: способ запуска HtmlUnitDriver с кастомным юзерагентом так, что бы они могли работать в параллельном режиме.


(Sergey Korol) #2

Вы забыли указать одну “маленькую” деталь - кусок кода, который у вас отвечает за масштабирование. :wink:


(GorDi) #3

Э-э-э-э-э… “масштабирование”? Не, не слышал… :slight_smile:
А кого\что нужно масштабировать и зачем?


(GorDi) #4

ВОПРОС РЕШЕН

Нет необходимости с “нуля” создавать и конфигурировать объект BrowserVersion. Достаточно сделать следующее:

HtmlUnitDriver driver = new HtmlUnitDriver(BrowserVersion.FIREFOX_38);
driver.getBrowserVersion().setUserAgent(userAgent);

На выходе получаем хтмлУнит с поддержкой джаваскрипта и кастомным юзер агентом.

ЗЫ у кого будут валится ошибки по JavaScript пробуйте принудительно указывать:

driver.setJavascriptEnabled(true);


(Stan) #5

Не понимаю в чем бенефит перехода с ФФ на htmlunit? Если нужна скорость, то как по мне лучше уж пойти по пути phantomjs-a. Тот же вебкит, а не какая-то своя релизация браузера на джаве. Имхо по скорости вы не проиграете.