【学习笔记】XPath定位总结
XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。
原理:基于html的文档目录结构进行定位元素。

以html代码为例讲解各种定位方法:
1. 绝对路径:以/开头从根节点一直找到当前节点
定位第一个div里面的img标签:/html/body/div/img[@alt="div1-img1"],其中[]里面是通过标签属性来确定要找到元素(img标签的alt属性)
绝对路径比较脆弱,变动结构后就容易变化,维护成本高,不推荐使用
2. 相对路径:以//开头的,根据要定位的元素的特征来定位的
定位第二个div里的input标签://input[@name="div2input"]
一般都会用相对路径
3. 索引定位:在找到一个集合结果后,通过索引定位第几个
定位第二个input标签://input[2]
如果页面中存在特征相同多个类似元素,此方法好用
4. 属性值定位:上面已经提到过了,就是在[]里面通过标签的属性来定位
例如定位“百度搜索”的超链接://a[@href="http://www.baidu.com"]
也可以使用多个属性定位://input[@type="text" and @name="address"]或//input[@type="text"][@name="address"]
如果页面中的元素特征性较强,能够通过特征定位,此法好用
5. 使用模糊函数定位:contains(),第一个入参是属性,第二个是第一个参数中的属性值包含的内容
定位“搜狗搜索”超链接://a[contains(@href,"sougou")]
适用于属性值有部分内容固定的情况,比如搜狗搜索的超链接有可能变成,https://www.sougou.com,而不是http://www.sougou.com,此时就不用修改,脚本代码也能兼容变化了,此法好用
6. 轴定位:用::表示,选择当前节点的父节点(parent)、子节点(child)、祖先节点(ancestor)、子孙节点(descendant)、后节点(following)前节点(preceding)、后兄弟节点(following-sibling)、前兄弟节点(preceding-sibling)
如上图,定位第一个div的img://div[1]/child::img
//div[1]定位到第一个div,它作为当前节点,找他的子节点中的img标签
此方法适用于相对位置较为固定的元素结构,此法好用
另:如果::后面是*,则表示取所有符合条件的元素
7. 文本text定位:通过html标签的文本定位的方法
例如定位文本内容等于“搜狗搜索”的a标签://a[text()="搜狗索索"]
常常结合contains函数://a[contains(text(),"搜狗")]
此法对于有text属性的标签好用,像div没有text属性,不能用
【学习笔记】XPath定位总结的更多相关文章
- Windows phone 8 学习笔记(8) 定位地图导航
原文:Windows phone 8 学习笔记(8) 定位地图导航 Windows phone 8 已经不使用自家的bing地图,新地图控件可以指定制图模式.视图等.bing地图的定位误差比较大,在模 ...
- Selenium-Python学习——通过XPath定位元素
用Xpath定位元素的方法总是记不住,经常要翻出各种文档链接参考,干脆把需要用到的内容整到这个笔记中方便查找. Xpath是在XML文档中定位节点的语言.使用 XPath 的主要原因之一是当想要查找的 ...
- Python+Selenium学习笔记6 - 定位
1.8种针对单个元素的定位方法 find_element_by_id() find_element_by_name() find_element_by_class_name() find_elemen ...
- CSS学习笔记之定位
position 有4中不同类型的定位,分别为static.relative.absolute.fixed 1.static 元素框正常生成.块级元素生成一个矩形框,作为文档流的一部分,行内元素则会创 ...
- Windows phone 8 学习笔记(8) 定位地图导航(转)
Windows phone 8 已经不使用自家的bing地图,新地图控件可以指定制图模式.视图等.bing地图的定位误差比较大,在模拟器中测试新地图貌似比较理想.本节主要讲解下位置服务以及新地图控件的 ...
- html+css学习笔记 4[定位]
如何让图1中的div2移动到如图2上的位置: 思路:哪些css命令能够影响盒子显示的位置呢? relative相对定位/定位偏移量 position:relative; 相对定位 a ...
- webdriver(python)学习笔记四——定位一组元素
webdriver可以很方便的使用find_element方法来定位某个特定的对象,不过有时候我们却需要定位一组对象,这时候就需要使用find_elements方法. 定位一组对象一般用于以下场景: ...
- Robot Framework与Web界面自动化测试学习笔记:定位到新窗口
在页面操作中,有时会需要打开新的窗口(新的网页不在当前窗口显示,而是在新的tab页显示), 比如利用 window.open("newurl") 或者 <a href=& ...
- [CSS3] 学习笔记-CSS定位
页面的设计需要通过摆放不同的模块在不同的位置,这个时候需要使用到定位和浮动的知识点,CSS3定位功能是很强大的,利用它你可以做出各种各样的网络布局. 1.CSS定位 1)定位机制 普通流:元素按照其在 ...
- HTML学习笔记 css定位(静态,相对,固定,绝对布局)偏移案例 第十二节 (原创) 参考使用表
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
随机推荐
- 洛谷P2664 树上游戏——点分治
原题链接 被点分治虐的心态爆炸了 题解 发现直接统计路径上的颜色数量很难,考虑转化一下统计方式.对于某一种颜色\(c\),它对一个点的贡献为从这个点出发且包含这种颜色的路径条数. 于是我们先点分一下, ...
- appium+python 【Mac】UI自动化测试封装框架介绍 <三>---脚本的执行
我自己编写的脚本框架中,所有的脚本执行均放在一个py文件中,此文件作为启动文件执行,包含了运行此文件将执行脚本.分配设备端口.自启appium服务等. 详细的介绍待后期补充.
- Redis:RedisHelper(5)
/// <summary> /// Redis 助手 /// </summary> public class RedisHelper { /// <summary> ...
- 2、创建MFC应用程序——基于对话框,时间计时器
使用计时器更新MFC界面时间,频率1s. 文件——新建项目——MFC应用程序,下一步,选择基于对话框,其他默认,完成. 双击窗体(或者鼠标右键)进入类向导,自动创建Ontimer()函数 void C ...
- 诊断和修复Web测试记录器(Web Test Recorder)问题
http://www.cnblogs.com/oscarxie/articles/1045430.html Database LoadTest2010 script C:\Program Files ...
- python3 threading.Lock() 多线程锁的使用
import threadingimport time lock = threading.Lock() #创建锁 def fun(data): try: lock.acquire(True) #锁定 ...
- JavaWeb_(Spring框架)Spring整合Hibernate
Dao层类要继承HibernateDaoSupport.java父类 原先使用Hibernate框架hibernate.cfg.xml配置数据库 <hibernate-configuration ...
- 8.8 JQuery框架
8.8 JQuery框架 一.JQuery是一个javascript的框架,是对javascript的一种封装. 通过JQuery可以非常方便的操作html的元素\要使用Jquery需要导入一个第三方 ...
- python格式化输出(% format用法)
%基本用法: 十进制输出:print('%d' % 6) 6也可以换成其它的数字变量 八进制输出:print('%o' % 6) 6也可以换成其它的数字变量 字符串输出:print('%s' ...
- 取模的n种情况
一 减法 (a-b)%mod=(a%mod-b%mod+n)%mod; 二 大数 有乘法取模 可推出 如下代码 string s; cin>>s; ,len=s.length(); ;i ...