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

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


person Leila Hamon    schedule 03.10.2012    source источник


Ответы (4)


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

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

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

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

person anotherdave    schedule 17.11.2013
comment
ИМО, это должен быть лучший ответ: p - person nehem; 16.09.2014
comment
Это ответ на вопрос. - person libra; 11.11.2014
comment
это гораздо лучший ответ - person davidpm4; 18.02.2015
comment
Спасибо, что по-человечески ответили на этот вопрос. Я на самом деле кое-что приобрел, а не разбирался в техническом жаргоне! - person IIllIIll; 20.05.2016

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

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

person Ariya Hidayat    schedule 04.10.2012
comment
Lol категория для мониторинга сети, которую вы связали, просто говорит нет. Это правильно? - person Joze; 25.09.2015

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

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

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

person manzoid    schedule 03.10.2012
comment
Мне очень понравился пример разгрузки тяжелого рендеринга, спасибо, что упомянули об этом! - person Leila Hamon; 04.10.2012

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

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

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

person BlaM    schedule 19.07.2017