04-xpath定位

简介: 04-xpath定位

1. xpath简介

  • xpath 是一门在 XML 文档中查找信息的语言

2. 术语简介

  2.1 节点

   解释:有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点

1. <?xml version="1.0" encoding="ISO-8859-1"?>
2. 
3. <bookstore>
4. <book>
5. <title lang="en">Harry Potter</title>
6. <author>J K. Rowling</author>
7. <year>2005</year>
8. <price>29.99</price>
9. </book>
10. </bookstore>
11. 
12. 
13. 上面的节点例子中
14. 
15. <bookstore> (文档节点)
16. 
17. <author>J K. Rowling</author> (元素节点)
18. 
19.  lang="en" (属性节点)

3. xpath语法

nodename 选取此节点的所有子节点。
/ 从根节点选取。
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
. 选取当前节点。
.. 选取当前节点的父节点。
@ 选取属性。

4. 轴语法介绍

ancestor 选取当前节点的所有先辈(父、祖父等)。
ancestor-or-self 选取当前节点的所有先辈(父、祖父等)以及当前节点本身。
attribute 选取当前节点的所有属性。
child 选取当前节点的所有子元素。
descendant 选取当前节点的所有后代元素(子、孙等)。
descendant-or-self 选取当前节点的所有后代元素(子、孙等)以及当前节点本身。
following 选取文档中当前节点的结束标签之后的所有节点。
namespace 选取当前节点的所有命名空间节点。
parent 选取当前节点的父节点。
preceding 选取文档中当前节点的开始标签之前的所有节点。
preceding-sibling 选取当前节点之前的所有同级节点。
self 选取当前节点。

5. 实际应用

  • 使用:F12打开开发者工具 -->  Ctrl + F 打开搜索框

  5.1. 属性

  • id、name、class
1. # id属性
2. driver.find_element_by_xpath("//*[@id='kw']")
3. 
4. # name 属性
5. driver.find_element_by_xpath("//*[@name='wd']")
6. 
7. # clas 属性
8. driver.find_element_by_xpath("//*[@class='s_ipt']")

 

  • 其他属性
1. # autocomplete 属性
2. driver.find_element_by_xpath("//*[@autocomplete='off']")

  5.2 文本

  • //*[text()='新闻']

  5.3 层级

  • //span[@class='bg s_ipt_wr quickdelete-wrap']/input

  5.4 索引

  • //span[@class='bg s_ipt_wr quickdelete-wrap']/span[2]

  5.5 模糊匹配

  starts-with :以**开头

  • //*[starts-with(@class,'s_i')]

  contains:包含

  • //*[contains(text(),'新')]
  • //*[contains(@id,'kw')]

 

  5.6 其他函数

   normalize-space:去掉前后空格

  • //*[normalize-space(text())='我已阅读并同意']

  5.7 轴语法使用

   following-sibling :当前节点后面的兄弟节点

  • //*[@id='kw']/following-sibling::a

   preceding-sibling :当前节点前面的兄弟节点

  • //*[@id='kw']/preceding-sibling::span

  parent:当前节点的父节点

  • //*[@id='kw']/parent::span

   ancestor:当前节点的先辈节点(父、祖父等)

  • //*[@id='kw']/ancestor::span


相关文章
|
8月前
定位有几种,他们的特点分别是什么? 是相对于什么进行定位的?
定位有几种,他们的特点分别是什么? 是相对于什么进行定位的?
56 0
|
2月前
定位有几种,他们的特点分别是什么?是相对于什么进行定位的?
定位有几种,他们的特点分别是什么?是相对于什么进行定位的?
23 2
|
2月前
|
API Python
文件位置标记及其定位
文件位置标记及其定位
22 2
|
9月前
|
IDE 前端开发 安全
使用xpath定位遇到的坑
使用xpath定位遇到的坑
141 0
|
10月前
测试定位打卡
测试定位打卡
46 0
|
前端开发
定位
定位
78 0
|
存储 中间件 测试技术
如何及时定位到非必现问题?
自定义channel;区分哪个环境中使用自定义的channel;使用优雅的 monolog 驱动
138 0
如何及时定位到非必现问题?
|
安全 开发者
定位 | 学习笔记
快速学习定位。
75 0
定位 | 学习笔记
文件定位
文件定位
96 0
|
前端开发 JavaScript 容器
分享个小案例-Fixed定位的框选功能
最近项目涉及到一个支持批量操作的小需求,交互上需要使用框选来触发。在查阅了一些资料后发现,网上的方案基本都是基于绝对定位布局的,此方案如果是针对全局(在body上)的框选,还是可用的。但是现实需求里几乎都是针对某个区域的框选。如果用绝对定位实现就比较繁琐了,需要调整定位原点。下面介绍一种基于Fixed定位的框选实现。
140 0
分享个小案例-Fixed定位的框选功能

热门文章

最新文章