Как получить XPath из selenium webelement или из lxml?

Я использую селен, и мне нужно найти 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>) сделал удалось найти этот элемент.

1 ответов


lxml может автоматически генерировать абсолютное XPath для вас, используя getpath() метод.

пример (используя Википедия главная страница, получение выражения 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