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