【selenium】八大元素定位方式|xpath css id name...

目录

一、基础元素定位

二、cssSelector元素定位——通过元素属性定位

三、xpath元素定位——通过路径 

1 、xpath绝对定位 (用的不多)

缺点:一旦页面结构发生变化(比如重新设计时,路径少两节),该路径也随之失效,必须重新写

2、 xpath相对定位

2.1  路径解释:

2.2  定位方式:

contains(@属性,'值')方法,定位某个属性包含值

text()方法 ,不是属性,所以不用@,获取任意标签的文本内容,可以和contains一起使用

2.3 xpath轴定位 

四、关于xpath和css定位区别

五、其他:

如果定位不出来,可以直接右键复制copyxpath

有时候同一个系统不同的账号进去,元素的排版顺序也会不一样


一、基础元素定位

1、id根据元素的id属性来定位元素 前端规范的话id是唯一的,但是如果不唯一,html也不会报错

2、name 根据元素的name属性来定位元素 name在html中不是唯一的

3、tagName 根据元素的标签名来定位元素

4、className 根据元素的class属性来定位元素

5、linkText 根据超链接的完整文本值来定位元素 一般是a标签

6、partialLinkText 根据超链接的部分文本值来定位元素 模糊

二、cssSelector元素定位——通过元素属性定位

优势是可以复合使用 适用于复杂的场景

  • 根据tagName——By.cssSelector(“tagName”)

  • 根据ID——By.cssSelector("#id值")/(“标签名#id”)

  • 根据className(样式名),.class形式 前端定位时比较常见

    •  比如:class="admin_login_btn denglu"
       By.cssSelector(".admin_login_btn.denglu")

  • 根据元素属性,属性名=属性值 css 多个属性,用多个[]连接

    • 单属性  By.cssSelector("标签名[属性名='属性值']");

    • 多属性  By.cssSelector标签名[属性1='属性值'][属性2='属性值');

三、xpath元素定位——通过路径 

xpath其实就是一个path(路径),一个描述页面元素位置信息的路径,相当于元素的坐标

xpath基于XML文档树状结构,是XML路径语言,用来查询xml文档中的节点

既可以用于XML,也可以用于HTML

1 、xpath绝对定位 (用的不多)

从根开始找---(根目录) 从最开始的元素(html)找当前元素的路径

绝对路径以单/号表示,而且是让解析引擎从文档的根节点开始解析,也就是html这个节点下开始解析

缺点:一旦页面结构发生变化(比如重新设计时,路径少两节),该路径也随之失效,必须重新写

2、 xpath相对定位

相对路径则以//表示,表示让xpath引擎从文档的任意符合的元素节点开始进行解析

相对定位优点:灵活,方便,耦合性低

举例:某界面html

<input type="text" placeholder="账号" name="admin_name" value="">

用以下两种方式均可以定位:

  • //*[@name='admin_name']
  • //input[@name='admin_name']

2.1  路径解释:

  • // 匹配指定节点,不考虑它们位置(/则表示绝对路径,从根下开始)

  • * 通配符,匹配任意元素标签名。

  • @选取属性

  • [] 属性判断条件表达式

2.2  定位方式:

1、通过元素名定位

2、通过元素名+索引定位

form/div[1]/input 获取手机号输入框

3、使用元素名+属性

*[@name='phone'] 获取手机号输入框

4、使用元素(html元素-->标签)名+包含部分属性值

contains(@属性,'值')方法,定位某个属性包含值

5、使用 元素名+元素的文本内容

text()方法 ,不是属性,所以不用@,获取任意标签的文本内容,可以和contains一起使用
*[text()='免费注册'] 获取免费注册超链接,注意空格 
a[contains(text(),'登录')]

6、多属性 直接用[]拼接或者用and or

input[@id='kw' and @name='wd']
input[@id='kw'][@name='wd']

2.3 xpath轴定位 

当某个元素的各个属性及其组合都不足以定位时,那么可以利用其兄弟节点或者父节点等各种可以定位的元素进行定位。

⚠️哥哥/第几个哥哥/弟弟/第几个弟弟都是针对当前定位元素而言的,可见下图

轴名称 释义
ancestor选取当前节点的所有祖先节点(包括父节点) --找所有的祖先
parent选取当前节点的父节点 -- 找爸爸
preceding选取当前节点之前的所有节点
preceding-sibling选取当前节点之前的所有兄弟节点 --找哥哥
following选取当前节点之后的所有节点
following-sibling选取当前节点之后的所有兄弟节点 --找弟弟

使用语法:

/轴名称::节点名称[@属性=值]

使用举例:

四、关于xpath和css定位区别

Xpath:// + */元素标签名 + [@属性1='属性值'] [@属性2='属性值'] 或者用and连接

CSS:标签名[属性1='属性值'] [属性2='属性值']

<a class="ft__nowrap domains__first" href="http://testingpai.com/domain/testing" xpath="1">

【xpath】//a[@class='ft__nowrap domains__first'][@xpath='1']        
  或者://*[@class='ft__nowrap domains__first'][@xpath='1']   

【CSS】a[class='ft__nowrap domains__first'][xpath='1']    

五、其他:

1、如果定位不出来,可以直接右键复制copyxpath
2、有时候同一个系统不同的账号进去,元素的排版顺序也会不一样

3、findElements与findElement

findElements找出所有,返回list集合; findElement从上往下找出第一个

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Springboot教程(二)——过滤器、拦截器

过滤器 过滤器可以在调用控制器方法之前进行一些操作&#xff0c;过滤器类一般放在filter包下。 配置类注册 使用过滤器时&#xff0c;要实现Filter接口&#xff0c;并重写doFilter方法&#xff1a; class TestFilter : Filter {override fun doFilter(request: ServletReq…

基于ZYNQ的PCIE高速数据采集卡的设计(三)硬件设计

采集卡硬件设计 3.1 引言 采集卡的硬件设计是实现采集功能的基础&#xff0c;良好的硬件设计可以使采集功能更容 易实现&#xff0c;方便软件开发。本章基于第二章的硬件设计方案来详细介绍采集卡硬件设计。 包括载卡和子卡的芯片的选型、配置和具体电路的设计。载卡和子卡…

ubuntu20.04安装实时内核补丁PREEMPT_RT

参考&#xff1a; Ubuntu 18.04安装 RT-PREEMPT 实时内核及补丁【过程记录】_ubuntu18.04 preempt rt linux 5.6.19-CSDN博客 https://github.com/UniversalRobots/Universal_Robots_ROS_Driver/blob/master/ur_robot_driver/doc/real_time.md当前内核&#xff1a;5.15.0-94-ge…

Redis哨兵模式和Redis Cluster模式

文章目录 &#x1f50a;博主介绍&#x1f964;本文内容Redis Cluster 模式支持自动故障转移功能吗&#xff1f;Redis Cluster 模式支持自动故障转移功能和哨兵有什么区别&#xff1f;Redis Cluster 模式和哨兵模式&#xff08;Sentinel&#xff09;在自动故障转移方面有一些关键…

【BUG 记录】MyBatis-Plus 处理枚举字段和 JSON 字段

【BUG 记录】MyBatis-Plus 处理枚举字段和JSON字段 一、枚举字段&#xff08;mysql环境已测、postgresql环境已测&#xff09;1.1 场景1.2 定义枚举常量1.3 配置枚举处理器1.4 测试 二、JSON字段&#xff08;mysql环境已测&#xff09;2.1 导包2.2 使用对象接受2.3 测试 三、JS…

2024年1月京东洗衣机行业数据分析:TOP10品牌销量销额排行榜

鲸参谋监测的京东平台1月份洗衣机市场销售数据已出炉&#xff01; 根据鲸参谋电商数据分析平台显示&#xff0c;今年1月份&#xff0c;京东平台上洗衣机的销量约160万件&#xff0c;环比上个月增长约42%&#xff0c;同比去年下滑7%&#xff1b;销售额约28亿元&#xff0c;环比…

大数据云迁移的难点及对应解决方案

企业正站在一个新的起点上&#xff1a;将庞大的数据资源迁移到云端。这不仅是一场技术能力的较量&#xff0c;更是对企业业务连续性和数据安全的重大考验。本文将深入探讨大数据云迁移的难点&#xff0c;并提供相应的解决方案&#xff0c;以期帮助企业在这场转型之旅中走得更稳…

软件License授权原理

软件License授权原理 你知道License是如何防止别人破解的吗&#xff1f;本文将介绍License的生成原理&#xff0c;理解了License的授权原理你不但可以防止别人破解你的License&#xff0c;你甚至可以研究别人的License找到它们的漏洞。喜欢本文的朋友建议收藏关注&#xff0c;…

迪萧科技有限公司邀您参观2024生物发酵展

参展企业介绍 浙江迪萧科技有限公司位于浙江杭州&#xff0c;是一家专注于膜技术的国家高新企业。公司针对食品饮料、医药保健等领域的过程分离与控制、产品提取及浓缩、废料资源化利用等提供全方案解决服务。坚持以“顾客至上、优质服务、卓越品质”为原则。为客户企业提供清…

【数据集】中国历史取水量数据集(1990-2015)

中国历史取水量数据集(1990-2015) 1 数据概述2 数据下载数据文件命名方式和使用方法3 各部门用水比例计算参考1 数据概述 中国历史取水量数据集(1990-2015)提供中国1990-2015年农业灌溉、市政、工业生产、畜牧业、一次能源开采、发电六个部门取水量的空间分布,空间精度为…

【JavaSE】实用类——String、日期等

目录 String类常用方法String类的equals()方法String中equals()源码展示 “”和equals()有什么区别呢&#xff1f; StringBuffer类常用构造方法常用方法代码示例 面试题&#xff1a;String类、StringBuffer类和StringBuilder类的区别&#xff1f;日期类Date类Calendar类代码示例…

UE4 材质多张图片拼接成一张图片(此处用2×2拼接)

UE4 材质多张图片拼接成一张图片&#xff08;此处用22拼接&#xff09; //TexCoord,TextureA,TextureB,TextureC,TextureDfloat3 ReturnTexture TextureA; if(TexCoord.x < 0.5 && TexCoord.y < 0.5) {ReturnTexture TextureA; } else if(TexCoord.x > 0.5…

试用北大库博Cobot-SCA工具

最近试用北大软件工具的库博-SCA工具&#xff0c;其产品全称是库博软件成分分析与同源漏洞检测工具软件。这个产品名称有点长&#xff0c;至于原因&#xff0c;可能是为了与市场上其它SCA工具进行区分吧。北大库博SCA不是像大多数SCA工具&#xff0c;解析构建文件中的依赖组件进…

C#与VisionPro联合开发——跳转页面

1、跳转页面并打开相机 From1 所有代码展示 using System; using System.IO; using System.Windows.Forms; //引入VisionPro命名空间 using Cognex.VisionPro;namespace ConnectCamera {public partial class Form1 : Form {public Form1() {InitializeComponent();}CogAcqFif…

现在转行学python,前景和优势有哪些?

正所谓“男怕入错行&#xff0c;女怕嫁错郎”&#xff0c;可想而知进入一个正确的行业有多重要。IT行业的高薪吸引着越来越多转行“入坑”&#xff0c;python作为目前的大势&#xff0c;是很多人转行的首选。为什么这么多的人都想转行学习python&#xff0c;python有哪些前景和…

echarts图表用key强制刷新后空白

我的需求是echarts图表全屏后退出全屏在edge浏览器上没有什么问题但是在Chrome浏览器上会出现表格的线不能变回原来的比例的问题 我就想在退出全屏的时候强制刷新一下echarts图表外面的这个div useEffect(() > {if (col) {col.addEventListener("webkitfullscreenchan…

批量改名神器:让文件名与主目录名同步,一键操作,轻松管理!

在数字化时代&#xff0c;我们每天都在与大量的文件打交道。从工作文档到个人照片&#xff0c;从视频剪辑到音乐收藏&#xff0c;文件的管理和整理成为了我们生活中不可或缺的一部分。然而&#xff0c;你是否曾经遇到过这样的烦恼&#xff1a;文件数量庞大&#xff0c;命名不规…

理解@Configuration和@Component注解的不同用途和作用范围

理解Configuration和Component注解的不同用途和作用范围 在Spring框架中&#xff0c;Configuration和Component是两个常见的注解&#xff0c;用于实现依赖注入和组件扫描等功能。虽然它们都是用于标识类的注解&#xff0c;但它们在作用和用途上有着明显的区别。本文将深入探讨C…

图扑数字孪生技术在航空航天方面的应用

"数字孪生"这一概念最早就是在航空航天领域使用&#xff0c;目的在于处理航天器的健康维护和保护问题。图扑软件依托自主研发的 HT for Web 产品&#xff0c;实现对民航机场、民航飞机、火箭发射、科技展馆的数字孪生展示。 图扑 HT 数字孪生技术助力航空航天数字孪…

基于JavaWeb实现的校园新闻发布系统

一、系统架构 前端&#xff1a;jsp | bootstrap | js | css 后端&#xff1a;springboot | jdbc 环境&#xff1a;jdk1.6 | mysql | maven 二、 代码及数据库 三、功能介绍 01. web端-首页 02. web端-新闻列表 03. web端-新闻明细 04. 管理端-登录页…