- PVSM.RU - https://www.pvsm.ru -

Wicked Good XPath: быстрый Xpath на Javascript-е

Мы рады представить новую библиотеку, разработанную силами Google – Wicked Good XPath [1], реализацию спецификации XPath для DOM Level 3 [2]. Мы уверены, что на сегодня эта библиотека является самой быстрой из всех существующих.

Чтобы начать ее использовать, достаточно скачать файл wgxpath.install.js [3] и включить его на вашей странице
<script src="wgxpath.install.js"></script>

Затем вызовите метод wgxpath.install() в коде страницы, который обеспечит доступ к document.evaluate, функции навигации Xpath, в текущем окне (window). Если вам нужно добавить функционал библиотеки в другом окне, достаточно передать указатель на это окно в метод install().

Несмотря на растущую популярность CSS селекторов, XPath [4] все еще остается полезным инструментом для выборки элементов в HTML документе. Особенно часто он используется в приложениях тестирования фронт-энда, таких как Selenium [5] и Web Puppeteer [6]. Ну, и иногда бывают случаи, когда Xpath является единственным возможным решением для доступа к определенным элементам на странице.

Если вы никогда не встречались с Xpath прежде, взгляние на пример: на странице результатов поиска Google, выражение //li[class [7]=”g”][3] укажет на третий результат в списке. Это видно со скрина плагина Xpath Viewer [8] к Хрому.

image

Основной сложностью в использовании XPath является отсуствие нативной поддержки в некоторых браузерах. К примеру, IE не поддерживает XPath на HTML документах. В результате этого многие разработчики вынуждены использовать решения на Javascript. Еще в 2005-ом инженеры Google-a выпустили бибилиотеку AJAXSLT [9], которая реализовывала правильную, но не очень быструю работу Xpath. Выполнение запросов этой библиотекой в IE было довольно долгим.

Позже, в 2007-ом, группа Cybozu Labs представила другую библиотеку, Javascript-XPath [10], которая была быстрее AJAXSLT в 10 раз. Многие приложения тестирования перешли на нее, и все было замечательно, но недолго. Библиотека довольно быстро лишилась поддержки, некому стало фиксить баги. Ну и ввиду того, что она была написана не на Google Closure [11], нам, гугловцам, было непросто внедрять ее в свои приложения. Библиотеку нужно было переписывать.

Но мы не просто портировали ее на Google Closure. Мы внесли некоторые исправления, которые существенно отразились на производительности библиотеки – наша версия работает на 30% быстрее оригинальной. В добавок, компилятор Closure смог ужать ее до 25 КБ, что на 40% меньше, чем Javascript-XPath. Ну, и наконец, мы уверены, что новая структуризация, и документация кода обеспечит скорость и легкость в дальнейшей поддержке библиотеки.

Отдельно хотим выразить благодарность двум нашим интернам Google-a, Michael Zhou и Evan Thomas, проделавшим большую часть работы в этом проекте.

Инженеры Google, Greg Dennis и Joon Lee.

Автор: creage


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/javascript/14502

Ссылки в тексте:

[1] Wicked Good XPath: http://code.google.com/p/wicked-good-xpath/

[2] XPath для DOM Level 3: http://www.w3.org/TR/DOM-Level-3-XPath/

[3] wgxpath.install.js: http://code.google.com/p/wicked-good-xpath/downloads/detail?name=wgxpath.install.js

[4] XPath: http://www.w3.org/TR/xpath/

[5] Selenium: http://seleniumhq.org/

[6] Web Puppeteer: http://code.google.com/p/puppeteer/

[7] class: http://habrahabr.ru/users/class/

[8] Xpath Viewer: https://chrome.google.com/webstore/detail/oemacabgcknpcikelclomjajcdpbilpf

[9] AJAXSLT: http://goog-ajaxslt.sourceforge.net/

[10] Javascript-XPath: http://coderepos.org/share/wiki/JavaScript-XPath

[11] Google Closure: https://developers.google.com/closure/