Casperjs / PhantomJs vs Selenium


мы используем селен для автоматизации наших UI тестирование. В последнее время мы видели большинство наших пользователей, использующих Chrome. Поэтому мы хотели знать-плюсы и минусы использования PhantomJS vs Selenium:

  • есть ли реальное преимущество с точки зрения производительности, например, время, затраченное на выполнение теста?
  • когда следует предпочесть PhantomJS Селену?
5 143

5 ответов:

они атакуют разные проблемы. Поскольку PhantomJS отлично работает в командной строке, он подходит в качестве первого уровня тестирования дыма, будь то в рамках рабочего процесса разработки и/или на сервере непрерывной интеграции. Selenium нацелен на несколько браузеров, и поэтому очень полезно обеспечить согласованность между браузерами и проводить обширные тесты в разных операционных системах.

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

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

с недавней интеграцией WebDriver (как отметила Ария), теперь вы можете использовать Selenium для управления PhantomJS.

Это очень мощный.

вы можете запустить набор полностью автоматизированных тестов Selenium (используя PhantomJS в качестве реализации WebDriver) через ваш CI на безголовом сервере Unix при каждой регистрации. Затем, если вы хотите проверить совместимость браузера, вы можете запускать свои тесты локально, изменив базовую реализацию WebDriver на Chrome, Firefox так далее.

в настоящее время я пишу структуру веб-извлечения. У меня есть 524 тестов, которые получают данные с 250 веб-сайтов с помощью XPath. Первоначально фреймворк использовал HTML-парсер, HTMLCleaner, но в настоящее время я исследую использование селен потому что я хочу поддержку Javascript. Я запустил тесты против HtmlUnit, Chrome, Firefox и драйверы PhantomJS. Вот сравнение затраченного времени и количества неудач для каждого подхода:

                    Failures    Time (secs) 
HtmlCleaner         0           82  
HtmlUnit            169         102 
Google Chrome       38          562 
Firefox             46          1159    
PhantomJS           40          575

некоторые комментарии:

  • в некоторых случаях "сбои" могут вообще не быть сбоями, это может быть что экстракторы не работают, потому что Javascript переписывает ДОМ. Я нахожусь в процессе анализа неудач, чтобы найти причину.

  • тем не менее, HtmlUnit является самым быстрым драйвером Селена, но он также ненадежен. Эта ненадежность касается не только Javascript, есть проблемы с обработкой" грязного, грязного, реального " HTML, потому что что-то кажется, нарушен алгоритм балансировки тегов. Несколько вопросов были подняты об этом, но они не были исправлены-см. HTML-UNIT 1423 и HTML-UNIT 1046.

  • Firefox является самым медленным драйвером Selenium, хотя я отключаю загрузку изображений и таблиц стилей. Это связано с тем, что он медленнее всего загружается и инициализируется, что делает его значительно медленнее, чем Chrome, и каждый раз, когда извлечение не удается, мне нужно перезагрузить драйвер (в тестах я создаю пул из 5 драйверов, чтобы уменьшить задержки извлечения URL для всех веб-драйверов Selenium).

  • PhantomJS достигает лучшей точности, чем Firefox, немного ниже, чем Chrome, но примерно в половине случаев Firefox. Более того, я могу запустить его на своем dev box, он не "берет на себя мою машину", запустив несколько браузеров, чтобы я мог продолжить работу.

Я бы очень рекомендовал PhantomJS.

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

  1. может использоваться для выполнения здравомыслия для веб-приложений в CI (даже если машины агента не имеют IE или chrome) тесты будут эффективно работать.
  2. некоторые команды разработчиков используют этот подход для получения быстрых результатов и потребляют меньше времени и ресурсов.
  3. самая большая особенность phantom JS-это захват экрана, запуск параллельных тестов с использованием многопоточности, что значительно сократит время выполнения.

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

мое приложение было ценообразование веб-приложения:

  1. в какой-то момент локаторы, которые работали нормально в браузере chrome, не работают на phantomJS.
  2. иногда при выполнении двойного щелчка или контекстного щелчка по selenium я должен поставить дополнительную проверку для проверки операций coz на первом месте это не щелчок.
  3. сохранение кэша и файлов cookie. После этого выйдите и войдите в данные остаются в кэше. | Итак, мы выполняем тест на chrome.
  4. один из самых важных вопросов, который я нашел "проблема загрузки файлов". Мы не можем загрузить файл в браузере phantomJs в нашем приложении. Мы перепробовали много вещей javascriptexcutor, jqueries но ни один из них не работал вообще. Поэтому мы также выполняем этот тест на Chrome. Примечание: мы широко использовали функции javascript в нашей структуре для взаимодействия с веб-элементом для PhantomJS. Одно можно сказать наверняка время выполнения очень меньше в PhantomJS. Таким образом, это зависит от приоритета клиента, хочет ли он функциональность / производительность идти с ним. Если вы хотите протестировать сквозной сценарий, перейдите к chrome.