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

Реальный безголовый браузер

Я отвечаю за тестирование корпоративного веб-приложения, которое сильно использует AJAX. Мне нужно создать систему, которая позволяет проводить непрерывные тесты без вмешательства человека. В настоящее время меня больше всего интересует тестирование нагрузки, но мне нужны те же сценарии, которые используются для генерации нагрузки, которая будет использоваться в функциональных тестах.

В настоящее время для проверки загрузки я использую grinder. Мы записываем скрипты, а затем обрабатываем их, чтобы обрабатывать, помимо прочего, асинхронные запросы. Эта система работает сейчас; однако сценарии деликатные, и я не могу их поддерживать во время нашего цикла разработки. Мне нужно иметь возможность "запускать браузер" с помощью языка программирования, который абстрагируется от деталей html и javascript, но он должен быть безголовым. Другими словами, если мое тестирование script ломается, оно должно представлять собой фактическое поломку приложения. Запуск firefox в xvfb не работает, поскольку firefox все еще использует слишком много ресурсов даже на безголовой машине Linux, работающей с xvfb. Я попробовал управлять firefox с помощью webdriver под безголовым сервером x.

Я работаю над HtmlUnit за несколько дней, так как это идеальное решение. Я писал HtmlUnit драйверы в Jython и, следовательно, я могу использовать их с дробильной машиной. К сожалению, я сталкиваюсь с ошибками javascript (это не настоящие ошибки в firefox/chrome/IE), и я думаю, что я нахожусь в конце пути для этого. В любом случае я хорошо знаю HtmlUnit, и мне действительно нужна альтернатива.

Я знаю, что есть другие решения (envjs и zombie.js); однако я не знаю, как развиты эти технологии, и я не хочу тратить еще одну неделю на тупик.

Насколько сложно было бы взять исходный код для Firefox или Webkit и прокомментировать все вызовы рендеринга /GUI и создать настоящий безголовый браузер? Это было сделано? Будет ли проще сделать это с чем-то другим? Честно говоря, я не могу понять, почему это уже не было сделано, поэтому я предполагаю, что это намного сложнее, чем я ожидаю.

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

4b9b3361

Ответ 1

enter image description here

Это сделали ребята в http://www.phantomjs.org/. По их собственным словам:

PhantomJS - это безгласный WebKit с API JavaScript. Он имеет быструю и родную поддержку для различных веб-стандартов: обработка DOM, селектор CSS, JSON, Canvas и SVG.

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

PhantomJS создается Арией Хидаят

Ответ 2

Возможно, вы сможете воспользоваться некоторыми из доступных инструментов тестирования модулей JavaScript, чтобы собрать необходимую вам среду.

Например, я обнаружил, что загрузка env.js в rhino дает приемлемый фальшивый браузер для тестирования большинства JavaScript. Это не соответствует некоторым атрибутам DOM, например, элементам, соответствующим их окну, но это не было серьезной проблемой в моем опыте.

См. также:

Ответ 3

Взгляните на LoadBooster. Это облачная служба тестирования нагрузки, которая использует безгласный браузер PhantomJS для тестирования веб-сайтов. Отказ от ответственности: я работаю для LoadBooster.

Ответ 4

Посмотрите WebKitDriver. Проект включает в себя безгласную реализацию WebKit.