概述
一、什么是Xpath
Xpath是在一种在XML文档里查找信息的语言。
二、Xpath定位元素的几种方式
1、绝对路径定位
a = browser.find_element_by_xpath('/html/body/div/div[2]/div/div/div/from/span/input')
绝对路径定位存在很大的问题就是如果页面元素一改变元素的xpath也会随之改变,很不稳定,不推荐使用
2、标签+属性定位——xpath = “//标签名[@属性=‘属性值’]”
- 例如,百度首页的输入框的xpath就可以表示为
//*[@id="kw"]
,其中*
表示所有的标
签名 - 当单一的属性无法确定到一个元素时,可以使用组合属性的方式
例如,百度首页的输入框可以表示为//*[@id="kw" and @name="wd"]
- 当然,也可以使用其他的逻辑运算,比如or、not
3、text()方法定位
例如,百度首页的新闻超链接的xpath可以表示为//*[text()='新闻']
4、contains()方法定位,也叫模糊定位
xpath = "//标签名[contains(@属性, '属性值')]"
例如,百度首页的新闻也可以写成//a[contains(@name,'news')]
只要属性中包含给出的字符串就可以定位到元素了
5、starts-with ,ends-with方法定位
starts-with – 匹配以xx开头的属性值;ends-with – 匹配以xx结尾的属性值
//*[starts-with(@value,'百度一')]
可以定位到百度一下按钮;
但是browser.find_element_by_xpath("//a[ends-with(@name,'_trnews')]")
定位不到新闻,那是因为ends-with是Xpath2.0的用法,但是浏览器一般通常只支持Xpath1.0
6、如果一个元素无法通过自身的属性定位到,那么可以先定位到他的上一级或者上N级,然后再一级一级地找到他
例如,定位到百度首页的输入框,可以表示成//form[@id='form']/span[contains(@class,'s_ipt_wr')]/input
三、Xpath的优缺点
- 缺点
1、性能差,因为使用这种方式进行定位,webdriver会将整个页面的所有元素进行扫描来找到我们所需的元素,所以当脚本中大量使用XPath方式定位,会大大降低脚本的执行速度。
2、Xpath会随着页面的布局的改变而改变,几乎不能维护 - 优点
1、可以做布尔逻辑判断,例如//*[@id="kw" and @name="wd"]
2、可以进行模糊定位,contains(),start-with(),ends-with()等
最后
以上就是苗条火龙果为你收集整理的Selenium Python 利用XPath定位元素的全部内容,希望文章能够帮你解决Selenium Python 利用XPath定位元素所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复