PhantomJS вместо htmlUnitDriver
На выходных занимался наведением порядка на своём github, заодно решил подремонтировать свои говноподелки, чтобы работали. Так вот, любил я использовать htmlUnitDriver. Но эта штука вечно не хочет работать с JS: то ей не нравится, что JS с ошибками, то не работает и валится с ошибками вроде:
Надоело мне всё это, решил попробовать альтернативу — pahtnomJS. Далее следует пошаговая инструкция:
- Качаем последнюю версию phantomJs с официального сайта (отсюда).
- Распаковываем и кладем в какую-нибудь директорию.
- Добавляем в ваш pom.xml вот такую штуку:
- <dependency>
- <groupId>com.github.detro</groupId>
- <artifactId>phantomjsdriver</artifactId>
- <version>1.2.0</version>
- </dependency>
(хозяйке на заметку: официальный github проекта ТУТ! Пацан честно признаётся, что могут быть баги и неожиданные эффекты, потому что нет времени всё это поддерживать, и просит о помощи… Если хотите засветится в опенсорсе, то это ваш шанс!)
- А теперь вот таким нехитрым образом инициализируем наш драйвер. Вуаля! У нас без UI браузер.
- private static WebDriver getWebDriver() {
- Capabilities caps = configWebDriver();
- return new PhantomJSDriver(caps);
- }
-
- private static Capabilities configWebDriver() {
- DesiredCapabilities dCaps = new DesiredCapabilities();
- dCaps.setCapability("takesScreenshot", true);
- dCaps.setCapability(
- PhantomJSDriverService.PHANTOMJS_PAGE_SETTINGS_PREFIX + "userAgent",
- "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/53 (KHTML, like Gecko) Chrome/15.0.87"
- );
- dCaps.setCapability(
- PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY,
- "path_to_phantom_js"
- );
- return dCaps;
- }
На этом всё. Удачной автоматизации и ботописательства.
P.S: Для автоматизированного тестирования PhantomJS уже использовать не модно. Docker контейнеры с браузерами — в новинках сезона!