码迷,mamicode.com
首页 > 其他好文 > 详细

selenium之xpath定位

时间:2018-09-17 17:41:18      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:lease   输入   利用   元素   sel   开发者   多个   找不到   用户名   

由于最新版火狐不在支持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定位

标签:lease   输入   利用   元素   sel   开发者   多个   找不到   用户名   

原文地址:https://www.cnblogs.com/fancyl/p/9662810.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!