selenium之xpath定位
Posted fancyl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium之xpath定位相关的知识,希望对你有一定的参考价值。
由于最新版火狐不在支持FireBug等开发工具,可以通过https://ftp.mozilla.org/pub/firefox/releases/ 下载49版本以下的火狐就可以增加Firebug等扩展了。
什么是XPATH?
XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。通俗一点讲就是通过元素的路径来查找到这个标签元素。
工具
Xpath的练习建议大家安装火狐浏览器后,下载插件,FireBug。
Xpath的定位方法
定位方法是一些固定的格式和规则,利用火狐浏览器在开发者模式下,输入//*即可定位当前页面所有的标签。
1.Xpath支持ID,class,name定位(例如:定位百度的搜索框)
通过Id来定位
//*[id=‘kw‘]
通过name来定位
//*[@name=‘wd‘]
通过class来定位
//*[@class=‘s_ipt‘]
2.如果没有ID,class,name标签,XPATH还支持属性定位。(比如href=‘//www.baidu.com/cache/sethelp/help.html‘标签是唯一属性时)
通过其他唯一属性来定位
//*[@href=‘//www.baidu.com/cache/sethelp/help.html‘]
3.当标签的属性重复时,Xpath提供了通过标签来进行过滤。
当input标签含有多个时,通过input下的其他属性进行定位
//input[@placeholder=‘x2‘]
即首先定位到所有的Input标签,然后再筛选出placeholder=‘x2‘的标签
4、当标签页重复时,Xpath提供了层级过滤
例如:找不到儿子,那么就先找他的爸爸,是在不行可以在找他的爷爷
支持通过 / 进行层级递进,找到符合层级关系的标签
//form/div/input[@placeholder="用户名"]
当层级都重复时,可以通过单个层级的属性进行定位
//form/div[@class=‘login-user‘]/input
5.当父级或兄弟级属性都相同无法定位时,Xpath提供了索引过滤。
通过索引,在List中定位属性,与python的索引有些差别,Xpath角标从1开始
//select[@name=‘city‘][1]/option[1]
6.上面集中如果都用上了之后还重复的话,我们就可以使用Xpath提供的终极神器,逻辑运算定位。and 或 or
通过and来缩小过滤的范围,只有条件都符合时才能定位到
//select[@name=‘city‘ and @size=‘4‘ and @multiple="multiple"]
or就相反了,只要这些筛选中,其中一个出现那么久匹配到了
//select[@name=‘city‘ or @size=‘4‘]
以上是关于selenium之xpath定位的主要内容,如果未能解决你的问题,请参考以下文章