在chrome-console中进行xpath/css/js定位(六)

news2025/1/12 1:45:08

目录

1.xpath

1.1 绝对定位与相对定位

1.2 通配符与不包含筛选

1.3 Xpath函数运算的简单实用

1.4 各种亲戚标签的定位

1.5xpath实例

1.5.1xpath:属性定位

1.5.2xpath:其它属性

1.5.3xpath:标签

1.5.4xpath:层级

1.5.5xpath:索引

1.5.6xpath:逻辑运算

1.5.7xpath:模糊匹配

2.CSS定位

2.1 css:属性定位

2.2 css:其它属性

2.3 css:标签与属性组合

2.4 css:层级关系

2.5 css:索引

2.6 css:逻辑运算

2.7 css:模糊匹配

🎁更多干货

完整版文档下载方式:


1.xpath

console中调用xpath的基本格式:$x("xpath表达式")

1.1 绝对定位与相对定位

  • 绝对定位:$x("/xpath表达式")
  • 相对定位:$x("//xpath表达式")

1.2 通配符与不包含筛选

属性@

通配符*

不包含not()

包含contains()

1.3 Xpath函数运算的简单实用

注意:xpath函数有很多,这里只是列举了一些简单的函数,若查看其他函数,请看xpath官方文档;

定位时去除空格
例:

 

去除空格

统计元素个数
例:统计行数为2行的元素个数

 

 

筛选name以dl开头:starts-with(name(), ‘dl’)
筛选字符串长度等于2的:string-lenth(name())=2

1.4 各种亲戚标签的定位

父标签parent::
比如定位div父标签parent::div

子标签child

哥哥标签preceding-sibling::

弟弟标签following-sibling::

后代标签descendant::

祖先标签ancestor::

1.5xpath实例

前言    
在上一篇简单的介绍了用工具查看目标元素的xpath地址,工具查看比较死板,不够灵活,有时候直接复制粘贴会定位不到。这个时候就需要自己手动的去写xpath了,这一篇详细讲解xpath的一些语法。
什么是xpath呢?
官方介绍:XPath即为XML路径语言,它是一种用来确定XML文档中某部分位置的语言。反正小编看这个介绍是云里雾里的,通俗一点讲就是通过元素的路径来查找到这个元素的。

1.5.1xpath:属性定位

1.xptah也可以通过元素的id、name、class这些属性定位,如下图:

2.于是可以用以下xpath方法定位

1.5.2xpath:其它属性

1.如果一个元素id、name、class属性都没有,这时候也可以通过其它属性定位到

1.5.3xpath:标签

1.有时候同一个属性,同名的比较多,这时候可以通过标签筛选下,定位更准一点
2.如果不想制定标签名称,可以用*号表示任意标签
3.如果想制定具体某个标签,就可以直接写标签名称

1.5.4xpath:层级

1.如果一个元素,它的属性不是很明显,无法直接定位到,这时候我们可以先找它老爸(父元素)。
2.找到它老爸后,再找下个层级就能定位到了。

3.如上图所示,要定位的是input这个标签,它的老爸的id=s_kw_wrap。
4.要是它老爸的属性也不是很明显,就找它爷爷id=form。
5.于是就可以通过层级关系定位到。

1.5.5xpath:索引

1.如果一个元素它的兄弟元素跟它的标签一样,这时候无法通过层级定位到。因为都是一个父亲生的,多胞胎兄弟。
2.虽然双胞胎兄弟很难识别,但是出生是有先后的,于是可以通过它在家里的排行老几定位到。
3.如下图三胞胎兄弟。

4.用xpath定位老大、老二和老三(这里索引是从1开始算起的,跟Python的索引不一样)。

1.5.6xpath:逻辑运算

1.xpath还有一个比较强的功能,是可以多个属性逻辑运算的,可以支持与(and)、或(or)、非(not)
2.一般用的比较多的是and运算,同时满足两个属性

1.5.7xpath:模糊匹配

1.xpath还有一个非常强大的功能,模糊匹配。
2.掌握了模糊匹配功能,基本上没有定位不到的。
3.比如我要定位百度页面的超链接“hao123”,在上一篇中讲过可以通过by_link,也可以通过by_partial_link,模糊匹配定位到。当然xpath也可以有同样的功能,并且更为强大。

可以把xpath看成是元素定位界的屠龙刀。武林至尊,宝刀xpath,css不出,谁与争锋?下节课将亮出倚天剑css定位。

2.CSS定位

大部分人在使用selenium定位元素时,用的是xpath定位,因为xpath基本能解决定位的需求。css定位往往被忽略掉了,其实css定位也有它的价值,css定位更快,语法更简洁。
这一篇css的定位方法,主要是对比上面的xpath来的,基本上xpath能完成的,css也可以做到。两篇对比学习,更容易理解。

2.1 css:属性定位

1.css可以通过元素的id、class、标签这三个常规属性直接定位到
2.如下是百度输入框的的html代码:

<input id="kw" class="s_ipt" type="text" autocomplete="off" maxlength="100" name="wd"/>

3.css用#号表示id属性,如:#kw
4.css用.表示class属性,如:.s_ipt
5.css直接用标签名称,无任何标示符,如:input

2.2 css:其它属性

1.css除了可以通过标签、class、id这三个常规属性定位外,也可以通过其它属性定位
2.以下是定位其它属性的格式

2.3 css:标签与属性组合

1.css页可以通过标签与属性的组合来定位元素

2.4 css:层级关系

1.在前面一篇xpath中讲到层级关系定位,这里css也可以达到同样的效果
2.如xpath:

//form[@id='form']/span/input和
//form[@class='fm']/span/input也可以用css实现

 

2.5 css:索引

1.以下图为例,跟上一篇一样:

2.css也可以通过索引option:nth-child(1)来定位子元素,这点与xpath写法用很大差异,其实很好理解,直接翻译过来就是第几个小孩。

2.6 css:逻辑运算

1.css同样也可以实现逻辑运算,同时匹配两个属性,这里跟xpath不一样,无需写and关键字

2.7 css:模糊匹配

1.css的模糊匹配contains('xxx'),网上虽然用各种资料显示能用,但是小编亲自试验了下,一直报错。
2.在各种百度后找到了答案:you can't do this withCSS selectors, because there is no such thing as:contains() in CSS. It was a proposal that was abandoned years ago.
非常遗憾,这个语法已经被抛弃了,所以这里就不用管这个语法了。
css语法远远不止上面提到的,还有更多更强大定位策略,有兴趣的可以继续深入研究。官方说法,css定位更快,语法更简洁,但是xpath更直观,更好理解一些。

🎁更多干货


完整版文档下载方式:

这些资料,对于从事【软件测试】等相关工作的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享。

在评论区和我互动交流或者私❤我【软件测试学习】领取即可,拿走不谢。


如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “👍点赞” “✍️评论” “💙收藏” 一键三连哦!

 

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

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

相关文章

界面组件DevExpress WPF v23.1新版亮点 - 启动和内存优化

DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序&#xff0c;这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…

智能机井灌溉控制器批量应用于新疆农业灌溉计量监测项目

近日&#xff0c;新疆某县级水利部门为进一步提升水资源取用水的监管能力&#xff0c;完善水资源实时监控、计划用水和节约用水管理目标&#xff0c;对该地农业灌溉用水计量设施进行升级改造&#xff0c;将700口井安装智能机井灌溉控制器&#xff0c;有效实现水量监测&#xff…

node.js通过node-java库调用java接口(jar包)

node.js通过node-java库调用java接口 1、业务需要2、开发环境3、调用java包简单实例4、调用自定的jar包接口 1、业务需要 最近因项目需求&#xff0c;需要调用第三方java的打的jar包&#xff0c;但项目后端是用node.js写的&#xff0c;因此需要用node.js调用第三方jar,网上搜集…

如何让其他电脑连接自己电脑上的虚拟机

想使用电脑A连接电脑B中的虚拟机有两种方式(这里说的都是windows环境,并且都在A和B在同一网络环境下) 方式一 通过配置windows防火墙中的入站规则,以开放端口的形式访问,但是这种方式电脑A中没法配置电脑B中虚拟机的域名映射.方式二 通过更改虚拟机的网络连接模式,并且要修改虚…

爬虫入门指南(2):如何使用正则表达式进行数据提取和处理

文章目录 正则表达式正则表达式中常用的元字符和特殊序列案例 使用正则表达式提取数据案例存储数据到文件或数据库使用SQLite数据库存储数据的示例代码SQLite基本语法创建表格&#xff1a;插入数据&#xff1a;查询数据&#xff1a;更新数据&#xff1a;删除数据&#xff1a;条…

尚硅谷Docker实战教程-笔记05【本地镜像发布到阿里云与私有库】

尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】视频地址&#xff1a;尚硅谷Docker实战教程&#xff08;docker教程天花板&#xff09;_哔哩哔哩_bilibili 尚硅谷Docker实战教程-笔记01【理念简介、官网介绍、平台入门图解、平台架构图解】尚硅谷Docker实战教程-笔…

LinkedHashMap 学习了解

一、概念 定义&#xff1a; public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V> LinkedHashMap 继承 HashMap 的功能&#xff0c;增加保证了元素的有效 /*** The head (eldest) of the doubly linked list.* 双向列表&#xff0c;表…

本地axure做好的展示网站如何发布到互联网上访问?快解析端口映射

Axure 是产品经理常用的原型设计工具&#xff0c;设计的原型导出的html就是一个静态网站的文件&#xff0c;可以部署在服务器、对象存储上做成一个静态网站&#xff0c;然后通过 快解析免费域名&#xff08;或自己的独立域名&#xff09;外网访问&#xff0c;用它就可以完成从设…

WebView头部添加android原生视频播放

需求&#xff1a;我们需要做一个h5页面&#xff0c;并且可以现实加载更多&#xff0c;并且头部我们想要加一个视频播放器&#xff0c;因为h5不够丝滑。 话不多说咱们直接上代码 Xml布局&#xff1a; <?xml version"1.0" encoding"utf-8"?> <…

finalshell提示java.net.ConnectException: Connection timed out: connect

为什么超时&#xff1f; 事情是这样的&#xff0c;为了不向学校低头&#xff0c;我没有开通校园网&#xff0c;买了流量卡&#xff0c;于是每次都给电脑开热点&#xff0c;朋友叫我吃饭&#xff0c;我直接就走了&#xff0c;干完饭回来&#xff0c;在finalshell里面它提示java.…

ASEMI代理光宝光耦LTV-6341的应用与性能分析

编辑-Z 本文将全面深入地探讨光耦LTV-6341的应用与性能。首先&#xff0c;我们将介绍光耦LTV-6341的基本概念和工作原理&#xff0c;然后&#xff0c;我们将详细分析其在电子设备中的应用&#xff0c;接着&#xff0c;我们将对其性能进行深入的分析&#xff0c;最后&#xff0…

US-P1-R-S单路控制比例阀放大器

US-P1-R-S、US-P1-R-C、US-P2-R-S、US-P2-R-C、US-P1-M-C、US-P2-M-S M12插头端子号 &#xff08;US-P1-…-C&#xff09; 线缆颜色 &#xff08;US-P1-…-S&#xff09; 端子定义 &#xff08;US-P1-R&#xff09; 端子定义 &#xff08;US-P1-M&#xff09; 1 红 2 …

【零基础学习C++】如何写一个C++类?

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️系列专栏:零基础学习C】 文章目录 前言什么是类&#xff1f;&#x1f914;类的三大特性&#x1f463;定义一个类&#x1f4bb;类的实例化&#x1f52c; 前言 类是对现实生活中一类具有共同特征的事物…

第五章.­ ­ Training Versus Testing

第五章. Training Versus Testing 上一章主要介绍机器学习的可行性。由NFL定理可知&#xff0c;机器学习貌似是不可行的&#xff0c;但是随后引入了统计学知识&#xff0c;如果样本数量足够大&#xff0c;且hypothesis数量有限&#xff0c;那么机器学习一般是可行的&#xff0…

哪款是你值得拥有地图可视化开发平台

地图可视化在当今的数据分析和决策制定等领域中发挥着越来越重要的作用&#xff0c;越来越多的企业和个人开始关注和使用这一技术。而地图可视化开发平台作为地图可视化的重要工具和平台&#xff0c;其选择合适的产品对于产品效果和开发效率都具有非常重要的意义。在选择地图可…

Spring Boot中的SimpMessagingTemplate是什么,原理,以及如何使用

Spring Boot中的SimpMessagingTemplate是什么&#xff0c;原理&#xff0c;以及如何使用 SimpMessagingTemplate是Spring Framework中的一个类&#xff0c;用于向WebSocket客户端发送消息。在Spring Boot应用程序中&#xff0c;可以使用SimpMessagingTemplate来实现WebSocket通…

【GPT】中文大语言模型梳理与测评(C-Eval 、AGIEval、MMLU、SuperCLUE)

文章目录 概述申请后直接使用大模型开源可本地部署 通识数据集测评&#xff08;C-Eval 、AGIEval、MMLU、SuperCLUE&#xff09;自媒体报道SuperCLUE&#xff1a;中文通用大模型综合性基准C-Eval&#xff1a;中英测评&#xff08;清华上交提出&#xff09;当前排名&#xff08;…

Object counting——生成密度图density map

文章目录 过程代码参考 过程 首先构造一个和原始图片大小相同的矩阵&#xff0c;并将其全部置为0&#xff0c;然后将每个被标记的人头对应的位置置为1&#xff0c;这样就得到了一个只有0和1的矩阵&#xff0c;最后通过高斯核函数进行卷积得到一个连续的密度图。 代码 import…

如何对修改密码接口进行压测?终于找到解决办法了

做接口测试中&#xff0c;对于一般性的单业务接口测试很多工具可供选择&#xff0c;但是对于一些相关业务相关性的关联接口测试就比较麻烦&#xff0c;使用工具比如jmeter、postman、soapui等等就比较麻烦。我比较偏重脚本化执行测试用例&#xff0c;所以选择了groovy作为主要语…

JAVA选择题笔试:static成员与非static成员、父类子类方法的继承、接口与抽象类、final的使用

0、前言 本文针对一些java基础知识的一些考点做出解析。 1、静态成员 与 非静态成员 静态变量与静态方法都是静态成员。 先说静态变量与普通成员变量的区别&#xff0c;例如如下两个变量&#xff1a; public class Demo {public static String A "静态变量";publi…