selenium元素定位之css选择器

时间:2023-03-10 06:30:29
selenium元素定位之css选择器

在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>

运行结果:

selenium元素定位之css选择器

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>

运行结果:

selenium元素定位之css选择器

 后代选择器:

<!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>

运行结果:

selenium元素定位之css选择器

子代选择器:


<!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>

运行结果:

selenium元素定位之css选择器

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

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

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

并集选择器:

<!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>

运行结果:

selenium元素定位之css选择器

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>

运行结果:

selenium元素定位之css选择器

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

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