phantomjs_400x400

На выходных занимался наведением порядка на своём github, заодно решил подремонтировать свои говноподелки, чтобы работали. Так вот, любил я использовать htmlUnitDriver. Но эта штука вечно не хочет работать с JS: то ей не нравится, что JS с ошибками, то не работает и валится с ошибками вроде:

  1. com.gargoylesoftware.htmlunit.ScriptException: Exception invoking createDocumentFragment
  1. com.gargoylesoftware.htmlunit.ScriptException: Exception invoking jsxFunction_close

Надоело мне всё это, решил попробовать альтернативу — pahtnomJS. Далее следует пошаговая инструкция:

  1. Качаем последнюю версию phantomJs с официального сайта (отсюда).
  2. Распаковываем и кладем в какую-нибудь директорию.
  3. Добавляем в ваш pom.xml вот такую штуку:
  1. <dependency>
  2. <groupId>com.github.detro</groupId>
  3. <artifactId>phantomjsdriver</artifactId>
  4. <version>1.2.0</version>
  5. </dependency>

(хозяйке на заметку:  официальный github проекта ТУТ!  Пацан честно признаётся, что могут быть баги и неожиданные эффекты, потому что нет времени всё это поддерживать, и просит о помощи… Если хотите засветится в опенсорсе, то это ваш шанс!)

  1. А теперь вот таким нехитрым образом инициализируем наш драйвер. Вуаля! У нас без UI браузер.
  1. private static WebDriver getWebDriver() {
  2. Capabilities caps = configWebDriver();
  3. return new PhantomJSDriver(caps);
  4. }
  5.  
  6. private static Capabilities configWebDriver() {
  7. DesiredCapabilities dCaps = new DesiredCapabilities();
  8. dCaps.setCapability("takesScreenshot", true);
  9. dCaps.setCapability(
  10. PhantomJSDriverService.PHANTOMJS_PAGE_SETTINGS_PREFIX + "userAgent",
  11. "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/53 (KHTML, like Gecko) Chrome/15.0.87"
  12. );
  13. dCaps.setCapability(
  14. PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY,
  15. "path_to_phantom_js"
  16. );
  17. return dCaps;
  18. }

На этом всё. Удачной автоматизации и ботописательства.

P.S: Для автоматизированного тестирования PhantomJS уже использовать не модно. Docker контейнеры с браузерами — в новинках сезона!

Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Опубликовать в Яндекс