Подтвердить что ты не робот

Зачем разработчику когда-либо понадобится PhantomJS, а не просто использовать некоторые рамки тестирования?

Я не уверен, почему PhantomJS необходим, и я надеюсь, что кто-то может помочь.

4b9b3361

Ответ 1

JavaScript, для которого требуется DOM, требуется некоторое место для запуска, обычно в браузере. Таким образом, тестовые среды часто запускают браузер, который затем контролирует, чтобы запускать тесты и выполнять утверждения. Сами тестовые среды часто не могут напрямую управлять браузером, поэтому в итоге вы получите три уровня:

  • Рамка: например. Жасмин
  • Драйвер: например. Селен
  • Браузер: например. Firefox

Просто, PhantomJS - это браузер, который работает без головок (т.е. не вытягивает экран). Преимущества, которые приносит, - это скорость - если вы контролируете фактическую программу на своем компьютере, у вас есть определенные накладные расходы при загрузке браузера, настройке профиля и т.д.

PhantomJS работает намного быстрее (я видел, что тесты выполняются менее чем за 1/3 времени). Единственный компромисс заключается в том, что вы не можете видеть свои тесты, хотя это не так уж и важно для автоматизированного набора! Вы также можете сделать скриншоты, если это необходимо (например, при сбоях). Если вы действительно этого захотите, вы можете сделать скриншоты со скоростью 24 кадра в секунду и отправить ffmpeg, чтобы отобразить видео с вашими тестами, хотя вы можете подорвать свою экономию скорости:)

Ответ 2

Это распространенное недоразумение. Проводя некоторое время с documentation, обычно устраняет путаницу. Например, PhantomJS часто используется в качестве безголовый тест-драйв для тестов, написанных в десятках фреймворков: Buster.JS, Capybara, Mocha, Jasmine, QUnit, WebDriver, YUI Test и многие другие. Как вы можете видеть здесь, PhantomJS не заменяет эти рамки вообще.

Конечно, существует много других применений PhantomJS, от программно захватывать веб-страницу до автоматического сетевой мониторинг. Существует список различных сообщений и статей в блогах, которые демонстрируют различные случаи использования PhantomJS.

Ответ 3

PhantomJS не предназначен для замены рамки тестирования, он будет работать вместе с одним.

Например, здесь случайный пример PhantomJS, используемый в сочетании с Jasmine.

Также обратите внимание, что PhantomJS предназначен не только для тестирования, вы можете использовать его для таких вещей, как скрининг экрана или для загрузки тяжелых изображений (например, для мобильных браузеров с поддержкой процессора) на сервер, как в этот пример.

Ответ 4

Другой вариант использования, который не упоминался здесь, - это создание веб-страницы и создание снимков или PDF-снимков этой страницы.

Например, вы можете отобразить счет-фактуру, отчет, документ,... как HTML-страницу и передать ее в PDF файл, чтобы отправить его конечному пользователю в качестве загружаемого документа.

Или, может быть, вы хотите миниатюры скриншотов веб-страницы? Другой возможный случай использования.