在selenium元素定位时会用到css选择器选取元素,虽说xpath在定位元素时能解决大部分问题,但使用css选择器选取元素也是一种不错的选择。

css相较与xpath选择元素优点如下:

  • 表达式更加简洁
  • 一般情况css的运行速度是优于xpath的。

常用的CSS选择器大致分为以下几种:

1.基础选择器:

基础选择器包括:

  • 标签:直接使用标签名,如下列:p
  • 类(class):“.”(英文句号)+class值
  • id:“#”+id值
  • 通配符:意为匹配所有元素, 用“*”表示

事列:

style标签中定义css选择器,以下为各个css选择方式
选中的元素会根据css选择器中设置的不同颜色进行展示,以下事列同理。
<!DOCTYPE html>
<!--基础选择器-->
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Base Css</title>
<!--style标签中定义css选择器,以下为各个css选择方式-->
<!--id方式选择:“#”加id值,如下:#title-->
<!--标签方式选择:直接使用标签名,如下:p-->
<!--class方式选择:“.”(英文句号)加class值,如下:.text-->
<style type="text/css">
#title{
color:red;
}
p{
color:blue;
}
.text{
color: green;
}
</style>
</head>
<body>
<h3 id="title">这是id</h3>
<p>这是标签</p>
<div class="text">
<em>这是类</em>
</div>
</body>
</html>

运行结果:

2.组合选择器

组合选择器就是将基础选择器的方法进行混合使用.有如下几种方式:

  • 标签指定选择:以标签为基本选择再连接id或class进行综合选择。如p#title
  • 后代选择:可以选择父类以下所有的子类(即既能选中儿子也能选中孙子及所有后代)。相比较子代选择,后代选择范围更广。选择选择使用空格连接 父类到子类及下面类的元素。
  • 子代选择:通过父类选择子类,只能选中子类,不包含子类的子类(即可以选中儿子,不能选中孙子)。使用“>”连接,子代选择只能选择子类中的第一个子类,不能选择子类的子类。
  • 并集选择:将多个选择使用“,”连接,表示“和”的意思

事列如下:

标签指定选择:

<!DOCTYPE html>
<!--标签指定选择器-->
<html lang="en">
<head>
<meta charset="UTF-8">
<title>标签指定选择</title>
<style>
p#a1{
color:red;
}
p.aclass{
color:blue;
} </style>
</head>
<body>
<div> <p>我想睡懒觉</p>
<p id="a1">根本没睡醒</p>
<p class="aclass">困得要死</p> </div> </body>
</html>

运行结果:

 后代选择器:

<!DOCTYPE html>
<!--后代选择器-->
<html> <head>
<meta charset="UTF-8">
<title></title>
<style>
.xiaoyang>#idle>em{
color: red;
} </style>
</head>
<body>
<div class="xiaoyang">
<div id="idle">
<em>该写什么</em>
<em>不知道哎</em> <p>
<em>这就有点小忧伤</em>
<em>你忧伤个锤锤</em>
</p>
</div>
</div>
</body> </html>

运行结果:

子代选择器:


<!DOCTYPE html>
<!--= 子代选择器-->
<html> <head>
<meta charset="UTF-8">
<title></title>
<style>
.xiaoyang #idle em{
color: yellowgreen;
} </style>
</head>
<body>
<div class="xiaoyang">
<div id="idle">
<em>该写什么</em>
<em>不知道哎</em> <p>
<em>这就有点小忧伤</em>
<em>你忧伤个锤锤</em>
</p>
</div>
</div>
</body> </html>

运行结果:

通过上面的比较可以看出:

子代选择器只能选择到第一代子元素(可以选择到儿子,选不到孙子)

后代选择器可以选择所有后代元素(既有儿子,还有孙子等)

并集选择器:

<!DOCTYPE html>
<!--并集选择器-->
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
p,#one,.two{
color: red;
}
</style>
</head>
<body>
<p>我爱学习</p>
<span id="one">我爱运动</span>
<strong class="two">我爱睡觉</strong>
</body>
</html>

运行结果:

3.属性选择器

属性选择器是运用标签中的属性进行定位,比如标签中常用的text属性等。

事列:

<!DOCTYPE html>
<html>
<!--属性选择器-->
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
p{
color: blue;
}
p[title="one"]{
color: red;
}
p[title~="two"]{
color: green;
}
p[title|="three"]{
color: pink;
} </style>
</head> <body>
<p title="five">我爱学习</p>
<p title="one">我爱运动</p>
<p title="one two">我爱吃饭</p>
<p title="three-four">我爱睡觉</p> </body> </html>

运行结果:

以上为常用css选择器的用法整理,若想了解其他类型选择器(比如伪类选择器),建议系统学习CSS。

在此说明:该篇随笔中的事列部分借鉴自实验楼css课程,如有侵权立删!

selenium元素定位之css选择器的更多相关文章

  1. 元素定位之css选择器(1)

    CSS选择器用于选择你想要的元素的样式的模式. "CSS"列表示在CSS版本的属性定义(CSS1,CSS2,或对CSS3). 表格部分摘自菜鸟教程:https://www.runo ...

  2. python+selenium元素定位之CSS学习02

    参考文档:https://www.runoob.com/cssref/css-selectors.html CSS选择器用于选择你想要的元素的样式的模式. "CSS"列表示在CSS ...

  3. python+selenium元素定位之CSS学习01

    参考文档:https://www.w3school.com.cn/cssref/css_selectors.asp 选择器 例子 例子描述 CSS .class .intro 选择 class=&qu ...

  4. 元素定位之css选择器(2)

    理论学习地址:https://www.runoob.com/cssref/css-selectors.html 定位思路: 先在单元素范围内选择查找id或name,定位不到的话往上查扩大范围 使用实例 ...

  5. Selenium3 + Python3自动化测试系列二——selenium元素定位

    一.selenium元素定位 Selenium对网页的控制是基于各种前端元素的,在使用过程中,对于元素的定位是基础,只有准去抓取到对应元素 才能进行后续的自动化控制,我在这里将对selenium8种元 ...

  6. selenium元素定位陷阱规避

    为什么selenium可以在各个浏览器上运行?因为selenium在与各个浏览器驱动执行前,会先把脚本转化成webdriver, webdriver wire协议(一种json格式的协议),这样就与脚 ...

  7. 自动化测试基础篇--Selenium元素定位

    摘自https://www.cnblogs.com/sanzangTst/p/7457111.html 一.Selenium元素定位的重要性: Web自动化测试的操作:获取UI页面的元素,对元素进行操 ...

  8. 超全selenium元素定位XPath、CSS

    说明:在HTML页面中,<p> 是一个标签,<p>hello</p> 是一个元素,元素由一个开始的标签和结束的标签组成.<font color="r ...

  9. Java + selenium 元素定位(4)之By CSS

    这篇我要介绍元素定位的倒数第二个方法啦,就是基于CSS的元素定位.关于一些CSS的知识,我这里就不累赘的讲了,以后可能会单独写一篇关于CSS的介绍.当然个人推荐如果之前完全没有CSS只是储备的,可以选 ...

随机推荐

  1. Python multiprocessing使用详解

    multiprocessing包是Python中的多进程管理包. 与threading.Thread类似,它可以利用multiprocessing.Process对象来创建一个进程. 该进程可以运行在 ...

  2. SPSS 23下载安装和激活

    目录 1. 其他版本 2. 安装教程 3. 下载地址 1. 其他版本 参考:https://www.cnblogs.com/coco56/p/11648399.html 2. 安装教程 SPSS 23 ...

  3. 常用技术blog

    淘宝核心系统团队 http://csrd.aliapp.com/ 淘宝搜索技术博客 http://www.searchtb.com 淘宝量子恒道官方博客 http://blog.linezing.co ...

  4. 05.Linux系统-WCP知识共享平台安装部署(旗舰版)

    WCP知识共享平台部署 一.环境准备 操作系统:CentOS Linux release 7.5.1804 (Core) Java:jdk-7u79-linux-x64.tar.gz 中间件:apac ...

  5. mock.js模拟ajax数据请求

    在我们开发过程中存在着前端页面ui完成了,但是没有接口进行联调数据的情况,现在介绍一下用mock.js来完成数据的请求.这样在后期我们的后台接口完成后只需要更改请求的接口名字即可!前提是你的模拟字段名 ...

  6. SpringBoot集成redis + spring cache

    Spring Cache集成redis的运行原理: Spring缓存抽象模块通过CacheManager来创建.管理实际缓存组件,当SpringBoot应用程序引入spring-boot-starte ...

  7. 磁盘,fdisk分区,MBR,dd命令

    光盘和磁盘.u盘.软盘.硬盘有什么区别 ①光盘: cdrom/dvdrom:光驱(光盘驱动器)    rom:只读    ram:可以擦写    cd:700M    dvd:4G ②软盘:flopp ...

  8. Python---面向对象---案例

    a = 5print(5/10)# 地板除(功能类似于数学模块当中floor()向下取整操作)print(5//10)print(a%10)b = 25print(b/10)print(b//10)p ...

  9. css常用小知识点汇总(一)

    1.文本过多溢出,怎么让他隐藏变成点点点(...)呢? text-overflow:ellipsis;overflow:hidden;display:-webkit-box;-webkit-line- ...

  10. 常用的JAVA第三方工具类

    转自:https://www.jianshu.com/u/9c5cb1ee4c46 一. org.apache.commons.io.IOUtils 注解 说明 closeQuietly 关闭一个IO ...