Я выполнял некоторые модульные тесты и как часть тестирования XML-скриптов обнаружил HTML-элементы с их Xpath.
Мне сказали другие тестеры, что включение явного идентификатора, такого как [@id="IDName"]
, улучшит производительность, поскольку это позволит приложению быстрее находить элемент.
Это правда, или это миф?
Как пример, это несколько Xpaths, с которыми я имею дело:
XPATH без идентификаторов:
/html/body/div[2]/div/div/div[3]/div/table/tbody//tr
XPath с идентификаторами:
//body[@id= "body"]/div[@id= "wrapper"]/div[@id= "MainContent"]/div[@id="Grid"]/div[@id="DataTableContainer"]/div/table/thead
Действительно ли Java сможет найти второй элемент быстрее первого?
Все зависит от процессора XPath, который вы используете.
Измерьте его и посмотрите.
Использование функции id() с большей вероятностью даст вам быстрый доступ, чем использование предиката, но это зависит от того, что он является атрибутом идентификатора DTD.
Если вы хотите быть уверенным в индексированном доступе, используйте XSLT и функцию key().
/html/body[@id="body"]/...
,//
, aka/descendant-or-self::node()/
имеет стоимость