python - 如何从 selenium webelement 或 lxml 获取 XPath?

标签 python selenium xpath html-parsing lxml

我正在使用 selenium,我需要找到一些 selenium web 元素的 XPaths。

例如:

import selenium.webdriver
driver = selenium.webdriver.Firefox()

element  = driver.find_element_by_xpath(<some_xpath>)
elements = element.find_elements_by_xpath(<some_relative_xpath>)

for e in elements:
    print e.get_xpath()

我知道我无法从元素本身获取 XPath,但是有什么好的方法可以获取它吗?

我尝试使用 lxml 来解析 HTML,但它无法识别 XPath,<some_xpath> ,我通过了,尽管driver.find_element_by_xpath(<some_xpath>) 确实找到了那个元素。

最佳答案

lxml 可以使用 getpath() 为您自动生成一个绝对 xpath方法。

示例(使用 wikipedia 主页,获取 Logo 的 xpath 表达式):

import urllib2
from lxml import etree

data = urllib2.urlopen("https://en.wikipedia.org")
tree = etree.parse(data)
element = tree.xpath('//div[@id="p-logo"]/a')[0]
print tree.getpath(element)

打印:

/html/body/div[4]/div[2]/div[1]/a

关于python - 如何从 selenium webelement 或 lxml 获取 XPath?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24411765/

相关文章:

python - 服务于 Flask 服务器的 Dash 应用程序内部服务器错误 : A name collision occurred between blueprints

python - Selenium 的 driver.get() 调用的最大递归错误

php - 如何在 facebook webdriver 1.3.0 中添加 cookie

java - Selenium:不明白如何为 IMDB 热门电影编写正确的 xpath

xml - 如何使用 Xpath 检索 XML 文件中的命名空间

java - 如何使用 xpath 访问特定的子 div? ( Selenium java )

python - PyInstaller 'no module named certifi' 错误

python - 如何在Python中对3D数组进行聚类?

python - 如何在 python 中使用 numpy.linalg.matrix_power 将矩阵提升为大幂?

selenium - 将动态 CSS 选择器转换为静态选择器