Selenium / lxml : 获取 xpath

roo*_*oot 3 html python selenium xpath lxml

是否有一种get_xpath方法或方法可以在 selenium 或 lxml.html 中完成类似的操作。我有一种感觉,我在某处看到过,但在文档中找不到类似的东西。

伪代码来说明:

browser.find_element_by_name('search[1]').get_xpath()

>>> '//*[@id="langsAndSearch"]/div[1]/form/input[1]'
Run Code Online (Sandbox Code Playgroud)

kav*_*yao 6

这个技巧适用于 lxml:

In [1]: el
Out[1]: <Element span at 0x109187f50>

In [2]: el.getroottree().getpath(el)
Out[2]: '/html/body/div/table[2]/tbody/tr[1]/td[3]/table[2]/tbody/tr/td[1]/p[4]/span'
Run Code Online (Sandbox Code Playgroud)

请参阅 的文档getpath


Ach*_*him 3

由于元素和 xpath 表达式之间不存在唯一的映射,因此不可能有通用的解决方案。但是如果您对 xml/html 了解一些,那么编写您自己的文件可能会很容易。只需从您的元素开始,使用 沿着树向上走parent并生成您的表达式。