Настоящий безголовый браузер - PullRequest
16 голосов
/ 18 января 2011

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

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

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

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

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

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

Ответы [ 4 ]

14 голосов
/ 30 сентября 2011

enter image description here

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

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

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

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

1 голос
/ 10 февраля 2014

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

1 голос
/ 18 января 2011

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

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

Смотри также:

0 голосов
/ 16 мая 2011

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

...