3

В настоящее время я использую сочетание specflow, selenium, беглой автоматизации и xunit для тестирования моего приложения-браузера на развернутом экземпляре веб-сайта в хроме. Это хорошо работает на машине разработчика, но часто происходит с ошибкой в ​​агентах сервера сборки, без каких-либо очевидных причин, кроме агентов сервера сборки.Могу ли я использовать phantom.js для тестирования тяжелого приложения javascript?

Я был на всем протяжении phantom.js documentation Я пытаюсь понять, могу ли я использовать phantom.js для полного тестирования моего приложения.

В моем приложении много логики javascript, я использую requirejs для загрузки всех своих модулей, и мне интересно, могу ли я использовать функции браузера безглавых браузеров для проверки всех его функциональных возможностей. Будет ли он загружать все файлы javascript, а затем разрешить мне делать действия над dom, как запускающие модалы, в которых есть формы? Множество пользовательских интерфейсов построено с использованием шаблонов нокаутов.

Я сделал несколько поисков, но ничего окончательного не появилось. Есть ли у кого-нибудь советы по этому поводу? На данный момент меня не так беспокоит кросс-браузерное тестирование, для этого у нас есть ручной QA. Это будет просто для системы раннего предупреждения с ранним предупреждением о неудачной работе с помощью ui-автоматизации всех пользовательских историй.


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

  • Доступ к драйверу селена и проверка jQuery.active
  • Создание нового expectOne/assertOne, который бросает, если css selector возвращает более одного элемента для селектора
+1

Любые детали, которые вы могли бы предоставить по вопросам, которые у вас были с FluentAutomation на ваших агентах сборки, были бы замечательными. Мне бы хотелось посмотреть на него и попытаться помочь. В большинстве случаев проблема связана с тем, что браузеры не запускаются/не очищаются или тесты не запускаются в сеансе пользовательского интерфейса, что может вызвать некоторые проблемы. – stirno

ответ

7

PhantomJs - это полная реализация браузера, которая просто не отображается на экране (i t имеет буфер, который можно захватить с помощью скриншота). Если ручное тестирование охватывает предпочтительные браузеры, и вам просто нужно знать о серьезных сбоях, сделайте снимок!

FluentAutomation.SeleniumWebDriver поддерживает PhantomJs из коробки в текущих версиях. Просто выберите PhantomJs как ваш «браузер», и он будет работать. Поставщик FluentAutomation.PhantomJs устарел и уйдет.

FluentAutomation.SeleniumWebDriver.Bootstrap(FluentAutomation.SeleniumWebDriver.Browser.PhantomJs); 
3

Да.

Возможно, вы найдете CasperJS более полезным для тестирования. Встроенный модуль тестера довольно прост в использовании. Каспер также открывается с помощью SlimerJS (для тестирования Gecko/Firefox) без дополнительного кода.

В Phantom или Casper Вы можете использовать page.evaluate() для запуска любого клиентского JavaScript, так что это не должно быть проблемой.

+0

Мы используем phantomjs/casperjs для запуска некоторых тестов в нашем js-приложении каждое утро. Мы имитируем сложные рабочие процессы и делаем скриншоты после каждого шага. Поэтому мы можем видеть, что пошло не так. НО 2 вещи: 1. Вы должны кодировать каждый шаг - это не типичная QA-задача и 2. Это не замена для единичных тестов, но модульные тесты могут выполняться и в phantomjs; см. chutzpah ... – Andreas

+0

@Andreas Согласитесь, оба момента. Чтобы упростить создание тестов, вы можете использовать FireBug. Например. селектор CSS для этой самой строки комментариев, на которой я печатаю, - это 'html body.question-page div.контейнер div # content div div # mainbar div # отвечает div # answer-20261132.answer table tbody tr td div # comments-20261132.com tables tfoot tr td.comment-form form # add-comment-20261132 table tbody tr td textarea' !! –

+0

Учитывая, что он уже использует Fluent Automation, который инкапсулирует ответ PhantomJS @ Stirno, вероятно, это путь. Это потребует повторного написания всего его набора тестов, в то время как ответ «волново» - это однострочное изменение. – pauljz

Смежные вопросы