Проверка синтаксиса XPATH в Python - PullRequest
0 голосов
/ 03 мая 2018

Я разрабатываю гусеничный механизм со многими действиями. Многие xpaths задействованы, и по этой причине я использую файл json для хранения. Затем запустится сканер. Я хотел бы выполнить базовую проверку синтаксиса (перед использованием xpath) на xpaths и вызвать ошибку для недопустимых xpaths.

например:

xpath1 = '//*[@id="react-root"]/section'
xpath2 = '//*[[@id="react-root"]/section'
xpath3 = '//*[@id="react-root"]\section'

из этих xpaths действителен только xpath1

существует ли какой-либо модуль или регулярное выражение, которое выполняет такую ​​проверку?

1 Ответ

0 голосов
/ 03 мая 2018

Вы можете скомпилировать строки xpath с помощью lxml.etree.XPath, что вызовет исключение, если синтаксис неправильный:

>>> import lxml.etree
>>> lxml.etree.XPath('//*[@id="react-root"]/section')
//*[@id="react-root"]/section
>>> lxml.etree.XPath('//*[[@id="react-root"]/section')
Traceback (most recent call last):
  ...
lxml.etree.XPathSyntaxError: Invalid expression
>>> lxml.etree.XPath(r'//*[@id="react-root"]\section')
Traceback (most recent call last):
  ...
lxml.etree.XPathSyntaxError: Invalid expression
...