How to get an XPath from selenium webelement or from lxml?

不打扰是莪最后的温柔 提交于 2019-12-22 04:36:26

问题


I am using selenium and I need to find the XPaths of some selenium web elements.

For example:

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()

I know I can't get the XPath from the element itself, but is there a nice way to get it anyway?

I tried using lxml to parse the HTML, but it doesn't recognize the XPath, <some_xpath>, I passed, even though driver.find_element_by_xpath(<some_xpath>) did manage to find that element.


回答1:


lxml can auto-generate an absolute xpath for you using getpath() method.

Example (using wikipedia main page, getting xpath expression for the logo):

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)

Prints:

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


来源:https://stackoverflow.com/questions/24411765/how-to-get-an-xpath-from-selenium-webelement-or-from-lxml

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!