- PVSM.RU - https://www.pvsm.ru -
Мы рады представить новую библиотеку, разработанную силами 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] к Хрому.

Основной сложностью в использовании 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/
Нажмите здесь для печати.