Web自动化测试——XAPTH高级定位

news2024/9/28 17:35:54

在这里插入图片描述


XAPTH高级定位

  • 一、xpath 基本概念
  • 二、xpath 使用场景
  • 三、xpath 相对定位的优点
  • 四、xpath 定位的调试方法
  • 五、xpath 基础语法(包含关系)
  • 六、xpath 顺序关系(索引)
  • 七、xpath 高级用法
    • 1、[last()]: 选取最后一个
    • 2、[@属性名='属性值' and @属性名='属性值']: 与关系
    • 3、[@属性名='属性值' or @属性名='属性值']: 或关系
    • 4、[text()='文本信息']: 根据文本信息定位
    • 5、[contains(text(),'文本信息')]: 根据文本信息包含定位
    • 6、[contains(属性名,'属性值')]: 根据属性值包含定位
    • 7、xpath:轴定位,轴运算
      • a、获取父亲
      • b、获取祖先
      • c、同级查找,该元素(input)下方的,妹妹/弟弟:
      • d、同级查找,该元素(input)上方的,哥哥/姐姐

一、xpath 基本概念

XPath 是一门在 XML 文档中查找信息的语言
XPath 使用路径表达式在 XML 文档中进行导航
XPath 的应用非常广泛
XPath 可以应用在UI自动化测试

二、xpath 使用场景

web自动化测试
app自动化测试

三、xpath 相对定位的优点

可维护性更强
语法更加简洁
相比于css可以支持更多的方式

四、xpath 定位的调试方法

浏览器-console
$x("xpath表达式")
浏览器-elements
ctrl+f 输入xpath表达式或者css表达式

五、xpath 基础语法(包含关系)

表达式结果
/从该节点的子元素选取
//从该节点的子孙元素选取
*通配符
nodename:标签名选取此节点的所有子节点
..选取当前节点的父节点
@选取属性

获取当前节点的父节点://input[@name="wd"]/..
获取当前节点的爷爷节点://input[@name="wd"]/../..

组合通过父亲找儿子关系(先找到上一级,再定位本级)://span[@id=“s_kw_wrap”]/input[@type=“text”]
组合通过祖先找儿子关系(只要是本级的上级就可以)://form[@id=‘form’]//input[@name=‘wd’]

通过兄弟姐妹找(比较麻烦)://input[@id='kw']/../[@class='soutu-btn']
在这里插入图片描述

六、xpath 顺序关系(索引)

xpath通过索引直接获取对应元素,xpath的索引是从1开始数的
//form[@name="f"]//input[3]

在这里插入图片描述

七、xpath 高级用法

1、[last()]: 选取最后一个

//form[@name="f"]/input[last()]

在这里插入图片描述

2、[@属性名=‘属性值’ and @属性名=‘属性值’]: 与关系

//form[@name="f" and contains(@class,"fm")]

在这里插入图片描述

3、[@属性名=‘属性值’ or @属性名=‘属性值’]: 或关系

//form[@name="f" or contains(@class,"fm")]
在这里插入图片描述

4、[text()=‘文本信息’]: 根据文本信息定位

//span[text()="按图片搜索"]
在这里插入图片描述

5、[contains(text(),‘文本信息’)]: 根据文本信息包含定位

//p[@class="lh"]//a[contains(text(),"京公网安备")]
在这里插入图片描述

6、[contains(属性名,‘属性值’)]: 根据属性值包含定位

//form[contains(@class,"fm")]

在这里插入图片描述

7、xpath:轴定位,轴运算

a、获取父亲

//input[@type="text"]//parent::span
在这里插入图片描述

b、获取祖先

//input[@type="text"]//ancestor::form

后面还可以加条件 //input[@type="text"]//ancestor::form[@id='form']

在这里插入图片描述

c、同级查找,该元素(input)下方的,妹妹/弟弟:

//input[@type="text"]/following-sibling::span

在这里插入图片描述

d、同级查找,该元素(input)上方的,哥哥/姐姐

//input[@type="text"]/following-sibling::span

在这里插入图片描述

注意:所有的表达式需要和[]结合

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/503672.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ESP32设备驱动-PCF8575IO扩展器驱动

PCF8575IO扩展器驱动 文章目录 PCF8575IO扩展器驱动1、PCF8575介绍2、硬件准备3、软件准备4、驱动实现1、PCF8575介绍 PCF8575用于两线双向总线 (I2C) 的 16 位 I/O 扩展器专为 2.5-V 至 5.5-V VCC 操作而设计。 PCF8575 器件通过 I2C 接口 [串行时钟 (SCL)、串行数据 (SDA)]…

flask教程8:模板

文章目录 一、模板与自定义过滤器1 模板2 过滤器转义过滤器讲解 3自定义过滤器 二、表单1表单2表单扩展 三、创建表单模型类与模板使用3.1 表单模型类 四 、使用表单接受并检验参数五、模板宏的使用六 、宏定义在外部的使用七 :模板继承与包含继承包含include 八 、…

PVE 安装 windows10

pve 安装教程大家可以参考视频:pve 安装 pve 安装 Windows10 视频教程:pve 安装Windows10 在安装好 pve 后我们就可以进行虚拟机的安装了。当然我们可以自行决定是否有必要进行 win10 的安装。 准备工作 1. 下载 win10 镜像文件:https://…

数据结构与算法基础(王卓)(35):交换排序之快排【第二阶段:标准答案、初步发现问题】

目录 第二阶段:一分为二 整个快排算法的程序运行大框架: 做出的改动(和原来程序的区别): Project 1: PPT标准答案: Project 1小问题: Project 1还存在着一个巨大的问题: 具体问…

嵌入式软考备考_8 软件测试

软件测试 测试:在规定的条件下操作程序,以发现错误,对软件质量进行评估。 对象:程序,数据,文档。 目的:发现错误,看是否满足用户需求,发现错误产生的原因(…

汇编四、51单片机汇编指令2

1、机器码 (1)MOV A,#0x60对应机器码为7460 (2)7460对应二进制 0111 0100 0110 0000 0x74对应指令,0x60对应立即数。 (3)immediate data翻译为立即数。 (4)可人为查表把汇编转为机器码,也可通过编译器把汇编转为机器码。 2、汇编常见缩写 (1)Rn: n可…

leetcode-040-组合总和2

题目及测试 package pid040; /* 40. 组合总和 II 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用 一次 。注意:解集不能包含重复的组合…

Vue中使用EasyPlayer播放H265视频流

需求说明 需要在Vue2的项目中使用EasyPlayer进行H265视频流的播放。使用官方的最新版本加载H265会有问题。一直处于加载中… 实现步骤 引入easyplayer,这里最开始引入了最新版会有问题,因此引入的是3.3.12版本,可参照官方文档进行配置。 EasyPlayer示…

HBase整合Phoenix

HBase整合Phoenix 创建软件目录 mkdir -p /opt/soft cd /opt/soft下载软件 wget https://dlcdn.apache.org/phoenix/phoenix-5.1.3/phoenix-hbase-2.5-5.1.3-bin.tar.gz解压 hbase tar -zxvf phoenix-hbase-2.5-5.1.3-bin.tar.gz修改 hbase 目录名称 mv phoenix-hbase-2.5…

(初)进程概念

目录 认识冯诺依曼系统 操作系统(Operator System) 设计OS的目的: 定位: 如何理解管理: 总结: 系统调用和库函数概念: 进程 基本概念 : 描述进程PCB task_struct - PCB的一种 task_struct内容分…

编译安装最新的Linux系统内核

现在还有不少机器是CentOS8 Stream系统,虽然上了贼船,不影响用就是了。8的编译和7大同小异,只是踩了更多的坑在这里记录一下,或许会帮到看到的朋友。 安装编译环境 CentOS8安装必要的包 yum groupinstall "Development Too…

【P13】JMeter 常数吞吐量定时器(Constant Throughput Timer)

文章目录 1、基于计算吞吐量:只有此线程2、基于计算吞吐量:所有活动线程3、基于计算吞吐量:当前线程组中的所有活动线程4、基于计算吞吐量:所有活动线程(共享)5、基于计算吞吐量:当前线程组中的…

【2023/05/08】雅卡尔织布机

Hello!大家好,我是霜淮子,2023倒计时第3天。 Share The world puts off its mask of vastness to its lover. It becomes small as one song,as one kiss of the eternal. 译文: 世界对着它的爱人,把它浩瀚的面具揭…

已做过算法题总结2

20. 有效的括号 (括号匹配是使用栈解决的经典问题,这道题主要是记住三种不成立的情况) 给定一个只包括 (,),{,},[,] 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用…

解密链表元素移除:三种巧妙思路,轻松驱逐难缠结点

本篇博客会讲解力扣“203. 移除链表元素”的解题思路,这是题目链接。 老规矩,先来审题: 以下是一些示例: 以下是提示: 本题的思路还挺多的,不过都是链表的常规操作。 思路1 万能的尾插法。遍历链表&am…

[Golang] 爬虫实战-用多层嵌套结构体去接收多层嵌套数据

😚一个不甘平凡的普通人,致力于为Golang社区和算法学习做出贡献,期待您的关注和认可,陪您一起学习打卡!!!😘😘😘 🤗专栏:算法学习 &am…

量子计算(10)编程实践2:隐形传态算法

目录 一、算法目的 二、算法原理 三、pyqpanda实现代码 四、测试结果 一、算法目的 量子隐形传态,又称量子遥传、量子隐形传输、量子隐形传送、量子远距传输或量子远传,是一种利用分散量子缠结与一些物理讯息的转换来传送量子态至任意距离的位置的技…

AutoSar CAN网络管理(CanNm)

文章目录 网络管理目的主动唤醒和被动唤醒状态管理1. 总线睡眠模式(Bus-Sleep Mode)2. 准备总线睡眠模式(Prepare Bus-Sleep Mode)3. 网络模式(Network Mode)3.1 重复报文状态(RepeatMessageState)3.2 常规…

基于springboot+mysql+jpa+html实现商品销售信息系统

基于springbootmysqljpahtml实现商品销售信息系统 一、系统介绍1、系统主要功能:2.涉及技术框架:3.本项目所用环境: 二、功能展示三、其它系统四、获取源码 一、系统介绍 1、系统主要功能: 订单管理模块 商品管理模块 品牌管理模…

【项目实战】—— 我们应该如何正确得创建线程池?

项目实战-我们应该如何正确得创建线程池? 对于现在而言多线程编程已经成为程序员必备的职业技能了,在开发实践过程中,你是否也遇到过相关多线程问题,比如创建多少线程才是合适的?线程池该如何创建?今天我们…