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


相关文章
EMQ
|
存储 人工智能 边缘计算
云边协同架构助力智能工厂视觉 AI 缺陷检测应用构建
打破检测系统和产线自动化设备之间的信息孤岛,构建数据高速通道,为视觉AI缺陷检测算法模型提供数据支撑,实现工厂生产智慧优化。
EMQ
911 1
云边协同架构助力智能工厂视觉 AI 缺陷检测应用构建
|
6月前
|
Android开发 开发者
Android中Dialog位置+样式的设置
本文介绍了在Android开发中如何设置Dialog的位置和样式。通过自定义`MyDialog`类,可以灵活调整Dialog的显示位置,例如将其固定在屏幕底部,并设置宽度匹配父布局。同时,文章还展示了如何模仿Android原生Dialog样式,通过定义`MyDialogStyle`去除标题栏、设置背景透明度、添加阴影效果以及配置点击外部关闭等功能,从而实现更加美观和符合需求的Dialog效果。代码示例详细,便于开发者快速上手实现。
398 2
|
10月前
|
自然语言处理 运维 Ubuntu
操作系统智能助手OS Copilot新功能评测
OS Copilot是阿里云基于大模型构建的操作系统智能助手,支持自然语言问答、辅助命令执行、系统运维调优等功能,帮助用户更高效地使用Linux系统。主要优势包括智能学习、专业解答、高效协作和便捷的阿里云CLI调用。支持的操作系统有Alibaba Cloud Linux、Ubuntu、Anolis OS和CentOS等。通过简单的命令行操作,用户可以轻松安装、升级或卸载OS Copilot,并利用其多种功能提升工作效率。具体使用方法包括单命令模式、交互模式及问号指令,适用于不同场景下的需求。
278 0
简单易懂的 全景图高清下载方法以及原理简要解析(支持下载建E、720yun、酷雷曼、景站、酷家乐、百度街景原图)
这篇文章介绍了一种简单易懂的全景图高清下载方法,使用在线网站全景管家,支持下载包括建E、720yun、酷雷曼等多个平台的全景图原图,并简要解析了全景图的原理和制作方法。
简单易懂的 全景图高清下载方法以及原理简要解析(支持下载建E、720yun、酷雷曼、景站、酷家乐、百度街景原图)
|
存储 数据采集 数据挖掘
“湖仓一体架构及其应用”写作框架,系统架构设计师
随着5G、大数据、人工智能、物联网等技术的不断成熟,各行各业的业务场景日益复杂,企业数据呈现出大规模、多样性的特点,特别是非结构化数据呈现出爆发式增长趋势。在这一背景下,企业数据管理不再局限于传统的结构化OLTP(On-Line Transaction Processing)数据交易过程,而是提出了多样化、异质性数据的实时处理要求。传统的数据湖(Data Lake)在事务一致性及实时处理方面有所欠缺,而数据仓库(Data Warehouse)也无法应对高并发、多数据类型的处理。因此,支持事务一致性、提供高并发实时处理及分析能力的湖仓一体(Lake House)架构应运而生。湖仓一体架构在成本、
446 2
|
NoSQL Redis 开发工具
redisCould not connect to Redis at 127.0.0.16379 Connection refused错误解析
redisCould not connect to Redis at 127.0.0.16379 Connection refused错误解析
318 0
|
消息中间件 存储 数据采集
基于Modbus实现的工业采集数据项目(包含led的开关)
1.首先应该实现一个基于Modbus实现对一个设备的数据采集以及控制,我这边是通过Modbus_tcp实现的。 2.因为要实现采集控制程序和网页服务器的通信我这边采用的是共享内粗你和消息队列,传输存储的数据就用共享内存,操作开关就用消息队列 3.写网页服务器和一个网页,需要让其两个可以正常通信,就是让网页服务器上的东西可以发到网页上 4.然后将采集的数据通过共享内存去分享给网页服务器,让网页服务器传给网页即可,控制开关同理,反过来。
336 1
|
存储 缓存 NoSQL
Redis深度解析:部署模式、数据类型、存储模型与实战问题解决
Redis深度解析:部署模式、数据类型、存储模型与实战问题解决
|
人工智能 安全 数据中心
冲刺!阿里云在5个国家投资新建数据中心
冲刺!阿里云在5个国家投资新建数据中心
481 2
|
canal SQL 关系型数据库
flink cdc 提交问题之提交任务异常如何解决
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。
下一篇
oss云网关配置