Касперж/Фантомс против Селена
Мы используем Selenium для автоматизации тестирования UI
. Недавно мы видели большинство наших пользователей, использующих Chrome. Поэтому мы хотели знать - за и против использования PhantomJS vs Selenium:
- Есть ли реальные преимущества с точки зрения производительности, например. время, затраченное на выполнение тестовых случаев?
- Когда следует отдать предпочтение PhantomJS над селеном?
Ответы
Ответ 1
Они атакуют разные проблемы. Поскольку PhantomJS отлично работает в командной строке, он подходит как первый уровень тестирования дыма, будь то в рамках рабочего процесса разработки и/или на сервере непрерывной интеграции. Selenium нацеливается на несколько браузеров, и поэтому очень полезно обеспечить согласованность между браузерами и проводить обширные проверки в разных операционных системах.
Если ваше веб-приложение нужно запускать в различных веб-браузерах, запуск тестирования пользовательского интерфейса только с помощью PhantomJS не даст наибольшего охвата тестирования. Тем не менее, совершенно нормально запускать PhantomJS и выполнять некоторые основные проверки здравомыслия, прежде чем делать углубленные тесты. Представьте себе безумие тестирования приложения для финансирования, когда экран входа в систему непреднамеренно нарушен и не работает!
Обратите внимание, что линия между ними немного размывается недавней поддержкой WebDriver в последней версии PhantomJS. Теперь можно быстро запустить тесты сначала с помощью PhantomJS, а затем (при отсутствии серьезной ошибки) продолжать выполнять те же тесты в настройке Selenium.
Ответ 2
С недавней интеграцией WebDriver (как отметила Ария) теперь вы можете использовать Selenium для управления PhantomJS.
Это очень мощно.
Вы можете запустить набор полностью автоматизированных тестов Selenium (используя PhantomJS в качестве реализации WebDriver) через ваш CI на безголовом Unix-сервере при каждой регистрации. Затем, если вы хотите проверить совместимость с браузером, вы можете запустить свои тесты локально, изменив базовую реализацию WebDriver на Chrome, Firefox и т.д.
Ответ 3
В настоящее время я пишу веб-фреймворк. У меня есть 524 теста, которые получают данные из 250 сайтов с использованием XPath. Первоначально структура использовала HTML-парсер, HTMLCleaner, но в настоящее время я изучаю с помощью Selenium, потому что я хочу поддержку 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 переписывает
DOM. Я нахожусь в процессе анализа неудач, чтобы найти причину.
-
Тем не менее, HtmlUnit является самым быстрым драйвером Selenium, но он также ненадежен. Эта ненадежность касается не только Javascript, но и проблем с обработкой "грязного, грязного, реального" HTML, потому что что-то кажется нарушенным в алгоритме балансировки тегов. Несколько вопросов были подняты по этому поводу, но они не были исправлены - см. HTML-UNIT 1423 и HTML-UNIT 1046.
-
Firefox - самый медленный драйвер Selenium, хотя я отключил загрузку изображений и таблицы стилей. Это связано с тем, что он является самым медленным для загрузки и инициализации, что делает его значительно медленнее, чем Chrome, и каждый раз при сбое в извлечении данных мне нужно перезагрузить драйвер (в тестах я создаю пул из 5 драйверов, чтобы уменьшить задержки на поиск URL-адресов для всех веб-драйверы Selenium).
-
PhantomJS обеспечивает лучшую точность, чем Firefox, немного ниже, чем Chrome, но примерно в половине случаев Firefox. Более того, я могу запустить его в своем блоке dev, он не "захватит мой компьютер", запустив несколько браузеров, чтобы я мог продолжить работу.
Я бы очень рекомендовал PhantomJS.
Ответ 4
Использование мощности как селена, так и фантома PhantomJS имеет безгласные возможности браузера, поэтому хорошо использовать его как один из браузеров с селеном (в дополнение к традиционным браузерам, таким как IE, Chrome и т.д.),
Преимущества такого подхода:
- Может использоваться для выполнения Sanity для веб-приложений в CI (даже если машины-агенты не имеют IE или хром), тесты будут
эффективно работать.
- Некоторые команды разработчиков используют этот подход для получения быстрых результатов и потребляют меньше времени и ресурсов.
- Самая большая особенность phantom JS - это захват экрана, запуск параллельных тестов с использованием многопоточности, что значительно сократит время выполнения.
Ответ 5
проблемы, с которыми я столкнулся при использовании PhantomJS:
В моем приложении было веб-приложение для оценки:
- В какой-то момент локаторы, которые отлично работали в браузере Chrome, не работают на phantomJS.
- Иногда при выполнении двойного щелчка или контекста нажмите selenium, я должен поставить дополнительную проверку для проверки операций coz на первом месте
это не щелчок.
- Сохранение кеша и cookie. После выхода из системы и последующего входа данные остаются в кеше. | Поэтому мы выполняем тест на хроме.
- Одна из самых важных проблем, которые я нашел "Проблема с загрузкой файлов". Мы не можем загрузить файл в браузере phantomJs в нашем приложении. Мы много пробовали
javascriptexcutor, jqueries, но ни один из них не работал вообще. Поэтому мы также выполняем этот тест в Chrome.
Примечание. Мы широко использовали функции javascript в нашей структуре для взаимодействия с веб-элементом для PhantomJS.
Одно можно сказать, что время исполнения в PhantomJS очень мало. Таким образом, это зависит от приоритета клиента, хочет ли он Функциональность/Производительность тогда
смирись с этим. Если вы хотите протестировать сценарий от конца до конца, перейдите к хром.