PhantomJS as an HTML Validator

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

Я создал phandom несколько месяцев назад, но только вчера нашел время, чтобы внести необходимые изменения в него. Так что сейчас - хорошее время, чтобы объяснить, как я использую Phandom в некоторых из своих модульных тестов.

Прежде чем я начну, однако, я должен сказать несколько слов о phantomjs, который является JavaScript-интерфейсом для WebKit. WebKit, с другой стороны, является веб-браузером без пользовательского интерфейса. WebKit - это библиотека на языке C++, которая позволяет манипулировать HTML-контентом с помощью вызовов DOM. Например, это простой код на JavaScript, расположенный в example.js:

Мы запускаем phantomjs из командной строки с помощью следующего кода:

PhantomJS создает объект page (предоставляемый модулем webpage внутри phantomjs), а затем просит его открыть веб-страницу с помощью метода open(). Объект взаимодействует с WebKit и преобразует этот вызов в инструкции DOM. Затем страница загружается. Движок PhantomJS завершается на строке 6.

WebKit отображает веб-страницу со всеми необходимыми компонентами, такими как CSS, JavaScript, ActionScript и т. д., так же, как любой стандартный веб-браузер.

Пока все хорошо, и это традиционный способ использования PhantomJS. Теперь перейдем к представлению вам идеи работы Phandom (что означает “PhantomJS DOM”) внутри модульных тестов на Java:

Чтобы протестировать это, давайте передадим phantomjs HTML-страницу и попросим его отобразить ее. Когда страница будет готова, мы попросим phantomjs показать нам, как этот HTML выглядит в WebKit. Если мы увидим нужные и желаемые элементы, - мы готовы продолжать. Используем следующий пример:

Когда мы используем вышеуказанный код, происходит следующее. Сначала мы получаем HTML html в виде строки из объекта doc, а затем передаем его в качестве аргумента в Phandom. Затем, на 13-й строке, мы вызываем метод Phandom.dom() для получения экземпляра класса org.w3c.dom.Document.

Если наш HTML содержит неправильный код JavaScript, метод dom() вызывает исключение времени выполнения, и модульный тест не проходит. Если HTML чистый и WebKit может его успешно отобразить, тест проходит.

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

Конечно, не забывайте, что на вашей сборочной машине должен быть установлен phantomjs. Чтобы избежать сбоев модульных тестов, когда phantomjs недоступен или отсутствует, я создал следующий вспомогательный метод:

Наслаждайтесь и не стесняйтесь сообщать о любых ошибках или проблемах, с которыми вы столкнулись, по адресу: GitHub issues

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-11-17 at 14:35

sixnines availability badge   GitHub stars