当前位置: 首页 > ops >正文

XPATH选择器常用语法

XPath是XML路径语言,用于在XML文档中导航和选择节点。由于HTML可以被视为XML的一种特例,XPath也可以用于HTML文档的元素定位。

1、XPath的基本语法

表达式描述
/从根节点选择(绝对路径)
//从当前节点选择(相对路径),可以是文档中的任何位置
.选择当前节点
..选择当前节点的父节点
@选择属性

2、基本XPath选择器

选择器类型语法示例描述
标签选择器//标签名//button选择所有指定标签的元素
属性选择器//标签名[@属性名='值']//input[@type='text']选择具有指定属性值的元素
ID选择器//*[@id='ID值']//*[@id='username']选择具有指定ID的元素
类选择器//*[@class='类名']//*[@class='btn-primary']选择具有指定类的元素

3、XPath轴

XPath轴用于定义相对于当前节点的节点集:

//div/child::p                 /* 选择div的所有p子元素 */
//div/parent::*                /* 选择div的父元素 */
//div/ancestor::form           /* 选择div的form祖先元素 */
//div/following-sibling::p     /* 选择div后的所有p兄弟元素 */
//div/preceding-sibling::p     /* 选择div前的所有p兄弟元素 */
//div/descendant::span         /* 选择div的所有span后代元素 */

4、XPath函数和运算符

XPath提供了多种函数和运算符,用于更精确的元素定位:

//button[text()='提交']                /* 文本完全匹配 */
//button[contains(text(),'提交')]      /* 文本包含 */
//button[starts-with(@id,'btn')]       /* 属性值开头匹配 */
//input[@required and @type='email']   /* 多条件与 */
//button[@type='submit' or @type='button']  /* 多条件或 */
//div[count(child::p) > 2]             /* 子元素数量条件 */

5、在Playwright中使用XPath

# 基本XPath选择器
page.locator('//button').click()                      # 所有按钮
page.locator('//input[@type="text"]').first().fill('test')  # 第一个文本输入框
page.locator('//*[@id="username"]').fill('user')      # ID选择器
page.locator('//div[@class="error"]').text_content()  # 类选择器# 使用XPath轴
page.locator('//label[text()="用户名"]/following-sibling::input').fill('test')  # 标签后的输入框
page.locator('//input[@id="email"]/parent::div').get_attribute('class')  # 父元素的类# 使用XPath函数
page.locator('//button[contains(text(), "登录")]').click()  # 包含特定文本的按钮
page.locator('//tr[position() mod 2 = 1]').count()  # 奇数行数量
http://www.xdnf.cn/news/16660.html

相关文章:

  • 磁盘坏道检测工具在美国服务器硬件维护中的使用规范
  • 云原生运维与混合云运维:如何选择及 Wisdom SSH 的应用
  • 从“碎片化”到“完美重组”:IP报文的分片艺术
  • 计算机视觉CS231n学习(1)
  • 网络编程学习
  • UE5保姆级新手教程第六章(角色互动)
  • python的异步、并发开发
  • 关于项目的一些完善功能
  • C语言:函数指针、二级指针、常量指针常量、野指针
  • 基于deepseek的事件穿透分析-风险传导图谱
  • Linux系统编程Day1-- 免费云服务器获取以及登录操作
  • 分层解耦(Controller,Service,Dao)
  • [Agent开发平台] API网关 | 业务领域 | DTO格式 | 分页令牌
  • 当人生低谷无人帮助时,如何独自奏响人生乐章
  • Abaqus2022下载与保姆级安装教程!!
  • 人工智能通信协议三种协议:MCP协议、A2A协议、AG-UI协议是什么
  • spark入门-helloword
  • CMS框架GetShell
  • 自动驾驶车辆的敏捷安全档案
  • 使用HaiSnap做了一款取件码App(一键生成)
  • 力扣热题100---------35.搜索插入为位置
  • 查询账户余额
  • 9.项目起步(3)
  • Scala实现常用排序算法
  • 第十二天:C++ 标准库函数分类总结
  • 【AI】开源项目整理
  • [Python] -进阶理解10- 用 Python 实现简易爬虫框架
  • 【同济大学】双速率自动驾驶架构LeAD:端到端+LLM,CARLA实测93%路线完成率,性能SOTA!
  • 基于 Hadoop 生态圈的数据仓库实践 —— OLAP 与数据可视化(四)
  • 机器学习之线性回归的入门学习