如何从selenium webelement或lxml获取XPath?

时间:2014-06-25 14:43:17

标签: python selenium xpath html-parsing lxml

我正在使用硒,我需要找到一些硒网元素的XPath。

例如:

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>) 确实设法找到了那个元素。

1 个答案:

答案 0 :(得分:7)

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

示例(使用wikipedia主页,获取徽标的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