如何从Selenium Webelement或lxml获取XPath? [英] How to get an XPath from selenium webelement or from lxml?

查看:567
本文介绍了如何从Selenium Webelement或lxml获取XPath?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

例如:

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,但是是否有一种不错的方法来获取它呢?

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

我尝试使用lxml解析HTML,但是即使driver.find_element_by_xpath(<some_xpath>) did 设法找到该元素,我也无法识别XPath,<some_xpath>. >

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.

推荐答案

lxml可以使用

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

示例(使用维基百科主页,获取徽标的xpath表达式):

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)

打印:

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

这篇关于如何从Selenium Webelement或lxml获取XPath?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆