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

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

在这里插入图片描述


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

在这里插入图片描述

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

相关文章:

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

XAPTH高级定位 一、xpath 基本概念二、xpath 使用场景三、xpath 相对定位的优点四、xpath 定位的调试方法五、xpath 基础语法(包含关系)六、xpath 顺序关系(索引)七、xpath 高级用法1、[last()]: 选取最后一个2、[属性名属性值 an…...

CentOS 7 安装 Nginx

前言 最近,在公司经常会进行项目的部署,但是服务器环境都是导师已经搭建好了的,我就是将项目文件放到特定目录。于是,周末在家就进行了 Nginx 的安装学习。之前,在 Windows 上使用过 Nginx,但是在 Linux 环…...

Databend 开源周报第 91 期

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 新数据类型&…...

【Ubuntu18.04使用yolov5教程】

欢迎大家阅读2345VOR的博客【Ubuntu18.04使用yolov5教程】🥳🥳🥳2345VOR鹏鹏主页: 已获得CSDN《嵌入式领域优质创作者》称号👻👻👻,座右铭:脚踏实地,仰望星空…...

CocoaPods如何发布新版本的Pod Library

当我们修改了一个Pod Library中的代码时,如何让依赖该库的项目能更新到最新代码,步骤如下: 假设现在修改了SamplePod(Pod名称)的代码,希望将最新版本更新到1.0.1,目前版本是1.0.0 修改SamplePo…...

v4l2框架

v4l2框架 文章目录 v4l2框架框架1.硬件相关层uvc_probeuvc_register_chainsuvc_register_termsuvc_register_video 2.核心层__video_register_device 3.虚拟视频驱动vivid分析入口vivid_init注册vivid平台驱动vivid_probevivid_create_instance 框架 1.硬件相关层 driver/medi…...

vue项目中生成LICENSE文件

vue项目中生成LICENSE文件 简介 LICENSE 文件是一个文本文件,它包含了你的项目所使用的开源软件的许可证信息。 在开发过程中,我们经常会使用到各种各样的第三方开源软件,这些软件是有版权和许可证的,我们在使用时需要遵循它们的…...

NewBing最新更新使用体验(无需等待人人可用)

NewBing最新更新使用体验 微软Bing爆炸级更新!无需等待人人可用! 今天,微软突然官宣全面开放BingChat: 无需任何等待。只需注册一个账户,首页即可体验。 NewBing最新更新新特性官方文档 https://www.microsoft.com/en-…...

欧拉奔赴品牌2.0时代,女性汽车真实用户需求被定义?

每年的上海国际汽车工业展览会,不仅是各大汽车品牌的技术“秀场”,也是品牌的营销“修罗场”。今年上海车展出圈的营销事件特别多,热度甚至一再蔓延到汽车行业外,其中欧拉也贡献了不少流量。 据了解,在2023上海车展欧…...

机器视觉工程师,听我一句劝,别去外包,干了三年,废了....对女人没了兴趣

​外包三年,干了就废,最后只会安装软件。 对于年轻人来说,需要工作,更需要生活。 对于年轻人来说,需要努力,更需要“面包”。 对于年轻人来说,需要规划,更需要发展。 对于外包,虽说废的不是很彻底,但那三年几乎是出差了三年、玩了三年、荒废了三年,那三年,技术…...

PBDB Data Service:Special parameters(特殊参数)

Special parameters(特殊参数) 描述参数1:下列参数在大部分请求中可用2:以下参数只与文本格式(.csv, .tsv, .txt)相关 描述 本文将介绍一组特殊参数,它们几乎可以在此数据服务的任何请求中使用…...

腾讯云轻量应用服务器使用限制说明(十大限制)

腾讯云轻量应用服务器和云服务器CVM相比具有一些限制,比如轻量服务器不支持更换内网IP地址,轻量服务器只能套餐整体升级且不支持降配,轻量不支持用户自定义配置私有网络VPC,还有如实例配额、云硬盘配额、备案限制和内网连通性等限…...

Python每日一练(20230507) 丑数I\II\III、超级丑数

目录 1. 丑数 Ugly Number I 2. 丑数 Ugly Number II 3. 丑数 Ugly Number III 4. 超级丑数 Super Ugly Number 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 丑数 Ugly Number I …...

K8S常见异常事件与解决方案

集群相关 Coredns容器或local-dns容器重启 集群中的coredns组件发生重启(重新创建),一般是由于coredns组件压力较大导致oom,请检查业务是否异常,是否存在应用容器无法解析域名的异常。 如果是local-dns重启,说明local-dns的性能…...

测试5年从中兴 15K 跳槽去腾讯 32K+16,啃完这份笔记你也可以

粉丝小王转行做测试已经是第5个年头,一直是一个不温不火的小职员,本本分分做着自己的事情,觉得自己的工作已经遇到了瓶颈,一个偶然的机会,获得了一份软件测试全栈知识点学习笔记,通过几个月的学习&#xff…...

CentOS 临时IP与永久IP配置

CentOS 临时IP与永久IP配置 CentOS是一种广泛使用的Linux发行版,通常用于服务器和企业网络中。在安装和配置CentOS服务器时,必须为其配置IP地址以便访问。在本文中,我们将介绍如何在CentOS中配置临时IP地址和永久IP地址。 临时IP地址配置 临…...

集线器、网桥、交换机

一.集线器 集线器(HUB),它是工作在物理层的设备, 由于它只是工作在物理层的设备,所以它并不关心也不可能关心OSI上面几层所涉及的,它的工作机制流程是:从一个端口接收到数据包时,会在…...

api接口怎么用?

API接口是一种应用程序编程接口,它允许不同的软件应用程序之间进行通信和交互。通过使用API接口,开发人员可以轻松地将自己的应用程序集成到其他应用程序中,从而实现更丰富的功能和更好的用户体验。 API接口的使用方法一般包括以下几个步骤&a…...

Bad minute in crontab?

ERROR 详细 修改crontab出现如下错误: crontab: installing new crontab “/tmp/crontab.MswKCq”:0: bad minute errors in crontab file, can’t install. Do you want to retry the same edit? n crontab: edits left in /tmp/crontab.MswKCq 根因定位 通过…...

【二维矩阵如何存储在一维数组中(行优先和列优先)】

列优先和行优先的性能取决于具体的硬件架构和代码访问模式。在现代计算机中,内存访问的局部性(locality of reference)对性能至关重要。局部性分为两类:时间局部性(temporal locality)和空间局部性(spatial locality)。时间局部性表示最近访问过的数据项很可能在不久的…...

对话记忆与上下文管理:Spring AI 实现多轮会话与持久化存储

系列导读 你现在看到的是《Spring AI 企业级集成与场景实践:从零搭建智能应用》的第 3/10 篇,当前这篇会重点解决:教会读者如何在 Spring AI 中优雅地管理对话上下文,避免重复输入和 Token 浪费。 上一篇回顾:第 2 篇《多模型适配实战:在 Spring AI 中统一管理 OpenAI、…...

手把手教你用UE5 C++复刻《只狼》式动态攀爬:不止于ALS V4的拓展思路

UE5 C实现《只狼》式动态攀爬系统:从ALS V4到次世代交互设计 在动作游戏开发领域,玩家与环境的交互质量往往决定了游戏体验的上限。当《只狼:影逝二度》以其行云流水般的攀爬系统重新定义动作游戏标准时,许多开发者开始思考&#…...

Sutton《苦涩的教训》早已预言:一切**人工精巧设计的专用智能系统**,终将被算力与数据驱动的通用范式无情取代

《The Bitter Lesson》《苦涩的教训》3条极简核心背诵版 人类总爱把领域知识、手工设计、精巧架构塞进AI,短期有用,长远全没用。AI 历史规律:通用规模化(算力数据大模型)永远碾压 人工定制智能小系统。未来趋势&#x…...

基于MCP协议与WebDAV构建AI智能体统一数据访问层

1. 项目概述与核心价值最近在折腾个人知识库和自动化工作流时,我又一次被“数据孤岛”问题绊住了脚。手头的信息散落在各种地方:Notion里的项目规划、Obsidian的零散笔记、Google Calendar的日程、甚至是一些本地文件夹里的PDF和图片。想要让这些数据联动…...

3个步骤掌握APK Installer:在Windows上直接安装Android应用的终极指南

3个步骤掌握APK Installer:在Windows上直接安装Android应用的终极指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否厌倦了在Windows电脑上使用笨重…...

从温度计误差到数字设计:测量不确定性与工程信任链构建

1. 从“温控失灵”到“测量哲学”:一个硬件工程师的日常反思前几天,我家那个服役多年的老式温控器彻底“罢工”了——液晶屏花得连温度数字都看不清。我找来熟悉的暖通师傅奥兰,换上了一台崭新的数字温控器。本以为问题就此解决,但…...

MediaCreationTool.bat:5大实用功能带你告别Windows安装烦恼

MediaCreationTool.bat:5大实用功能带你告别Windows安装烦恼 【免费下载链接】MediaCreationTool.bat Universal MCT wrapper script for all Windows 10/11 versions from 1507 to 21H2! 项目地址: https://gitcode.com/gh_mirrors/me/MediaCreationTool.bat …...

rust-rdkafka社区生态与最佳实践:知名项目使用案例分享

rust-rdkafka社区生态与最佳实践:知名项目使用案例分享 【免费下载链接】rust-rdkafka A fully asynchronous, futures-based Kafka client library for Rust based on librdkafka 项目地址: https://gitcode.com/gh_mirrors/ru/rust-rdkafka rust-rdkafka是…...

长期使用Taotoken Token Plan套餐在项目开发中的成本控制体会

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 长期使用Taotoken Token Plan套餐在项目开发中的成本控制体会 在中长期AI项目的开发实践中,成本的可预测性与可控性是团…...

靠谱的工程防火门公司推荐

在工程行业摸爬滚打十几年,我见过太多因防火门翻车的项目:验收反复返工、产品用了两三年就变形卡死、超大门洞找不到厂家定制…… 这些看似鸡毛蒜皮的小事,一旦卡到消防验收节点上,轻则赔钱延期,重则被责令停工整改。今…...