Selenium(五):CSS选择器(二)

1. CSS选择器

1.1 选择语法联合使用

CSS selector的另一个强大之处在于:选择语法可以联合使用。

html代码:

<div id=‘bottom‘>
    <div class=‘footer1‘>
        <span class=‘copyright‘>版权</span>
        <span class=‘date‘>发布日期:2019-11-26</span>
    </div>
    <div class=‘footer2‘>
        <span>主页
        <a href="https://www.cnblogs.com/liuhui0308/">爱编程的小灰灰</a>
        </span>
    </div>
</div> 

比如,我们要选择网页html中的元素

<span class=‘copyright‘>版权</span>

CSS selector表达式可以这样写:

div.footer1 > span.copyright

就是选择一个class属性值为copyright的span节点,并且要求其必须是class属性值为footer1的div节点 的子节点。

也可以更简单:

.footer1 > .copyright

就是选择一个class属性值为copyright的节点(不限类型),并且要求其必须是class属性值为footer1的节点的子节点。

当然这样也是可以的:

.footer1  .copyright

因为子元素同时也是后代元素。

1.2 组选择

如果我们要同时选择所有class为plantclass为animal的元素。怎么办?

这种情况,css选择器可以使用逗号,称之为组选择,像这样:

.raise , .wolf

再比如,我们要同时选择所有tag名为div的元素和id为BYHY的元素,就可以像这样写

div,#BYHY

对应的selenium代码如下:

elements = wd.find_elements_by_css_selector(‘div,#BYHY‘)
for element in elements:
    print(element.text)

我们再看一个例子:

html代码:

<div id=‘t1‘>
    <h3> 唐诗 </h3>
    <span>李白</span>
    <p>静夜思</p>
    <span>杜甫</span>
    <p>春夜喜雨</p>
</div>      

<div id=‘t2‘>
    <h3> 宋词 </h3>
    <span>辛弃疾</span>
    <p>北固亭怀古</p>
</div>

我们要选择所有唐诗里面的作者和诗名,也就是选择所有id为t1里面的span和p元素。

我们是不是应该这样写呢?

#t1 > span,p

这样是不行的,这样写的意思是选择所有id为t1里面的span和所有的p元素。

只能这样写:

#t1 > span , #t1 > p

1.3 按次序选择子节点

html代码:

<div id=‘t1‘>
    <h3> 唐诗 </h3>
    <span>李白</span>
    <p>静夜思</p>
    <span>杜甫</span>
    <p>春夜喜雨</p>
</div>      

<div id=‘t2‘>
    <h3> 宋词 </h3>
    <span>苏轼</span>
    <p>赤壁怀古</p>
    <p>明月几时有</p>
    <p>江城子·乙卯正月二十日夜记梦</p>
    <p>蝶恋花·春景</p>
    <span>辛弃疾</span>
    <p>京口北固亭怀古</p>
    <p>青玉案·元夕</p>
    <p>西江月·夜行黄沙道中</p>
</div>

1.3.1 父元素的第n个子节点

我们可以指定选择的元素是父元素的第几个子节点,使用nth-child。

比如:

我们要选择唐诗和宋词的第一个作者,

也就是说选择的是第2个子元素,并且是span类型

所以这样可以这样写:

span:nth-child(2)

如果你不加节点类型限制,直接这样写:

:nth-child(2)

就是选择所有位置为第2个的所有元素,不管是什么类型。

1.3.2 父元素的倒数第n个子节点

也可以反过来,选择的是父元素的倒数第n个子节点,使用nth-last-child。

比如:

p:nth-last-child(1)

就是选择第倒数第1个子元素,并且是p元素。

1.3.3 父元素的第几个某类型的子节点

我们可以指定选择的元素是父元素的第几个某类型的子节点,使用nth-of-type。

比如:

我们要选择唐诗和宋词的第一个作者,可以像上面那样思考:选择的是第2个子元素,并且是span类型。

所以可以这样写:

span:nth-child(2)

还可以这样思考,选择的是第1个span类型的子元素。

所以也可以这样写:

span-nth-of-type(1)

1.3.4 父元素的倒数第几个某类型的子节点

当然也可以反过来,选择父元素的倒数第几个某类型的子节点,使用nth-last-of-type。

比如:

p:nth-last-of-type(2)

1.3.5 奇数节点和偶数节点

如果要选择的是父元素的偶数节点,使用nth-child(even)。

比如:

p:nth-child(even)

如果要选择的是父元素的奇数节点,使用nth-child(odd)

p:nth-child(odd)

如果要选择的是父元素的某类型偶数节点,使用nth-of-type(even)。

如果要选择的是父元素的某类型奇数节点,使用nth-of-type(odd)。

1.4 兄弟节点选择

1.4.1 相邻兄弟节点选择

上面的例子里面,我们要选择唐诗和宋词 的第一个作者

还有一种思考方法,就是选择h3后面紧跟着的兄弟节点span。

这就是一种相邻兄弟关系,可以这样写h3+span。

表示元素紧跟关系的是加号。

1.4.2 后续所有兄弟节点选择

如果要选择是选择h3后面所有的兄弟节点span,可以这样写h3 ~ span。

原文地址:https://www.cnblogs.com/liuhui0308/p/11934353.html

时间: 2024-08-02 04:52:13

Selenium(五):CSS选择器(二)的相关文章

前端笔记七,级联样式单与CSS选择器(二)

只插入部分元素: 在:after,:before前使用更严格的CSS选择器 配合quotes属性执行插入 首先定义quotes,然后再指定content使用open-quote或者close-quote 配合counter-increment属性添加编号 该属性指定的字符就是计算器名称,然后通过counter属性引用计数器即可 使用自定义编号:通过counter(name,list-style-type)实现 其中,list-style-type: decimal:阿拉伯数字,默认值. disc

最常用的五类CSS选择器

一些新手朋友对选择器一知半解,不知道在什么情况下运用什么样的选择器,这是一个比较头疼的问题,针对新手朋友,对CSS选择器作一些简单的说明,希望能对大家的学习工作有一定的帮助,更多的CSS知识请参考Webjx.com的其他文章. 准确而简洁的运用CSS选择器会达到非常好的效果.我们不必通篇给每一个元素定义类(class)或ID,通过合适的组织,可以用最简单的方法实现同样的效果.在实际工作中,最常用的选择器有以下五类: 一.标签选择器: 顾名思议,标签选择器是直接将HTML标签作为选择器,可以是p.

还需要学习的十二种CSS选择器

在前面的文章中,我们在介绍了<五种你必须彻底了解的CSS选择器>,现在向大家介绍,还需要学习的另外十二种CSS选择器.如果你还没有用过,就好好学习一下,如果你已经熟知了就当是温习. 一.X:link X:visited X:hover X:active 伪类 a:link { color: red; }a:visted { color: purple; } 伪类选择器,visted已被访问过的样式,hover鼠标经过的样式,link未被访问的样式.三种伪类选择器常用于链接,但不是说只适用于链接

CSS标签选择器(二)

一.CSS选择器概述 1.1.CSS功能 CSS语言具有两个基本功能:匹配和渲染 当浏览器在解析CSS样式时,首先应该确定哪些元素需要渲染,即匹配哪些HTML元素,这个操作由CSS样式中的选择器负责标识. 只有匹配到具体的对象之后,浏览器才能根据CSS样式声明,决定渲染的效果,并及时呈现在页面中. 1.2.CSS选择类型 标签选择器 ID选择器 类选择器 特殊选择器 1.3.CSS基本语法 二.标签选择器 2.1标签选择器概述 以文档对象类型的元素作为选择器,如p.div,span等. 最常用的

CSS选择器(二)

五.属性选择器. 属性选择器可以根据元素的属性及属性值来选择元素. 简单属性选择 如果希望选择有某个属性的元素,而不论属性值是什么,可以使用简单属性选择器. 例子 1 如果您希望把包含标题(title)的所有元素变为红色,可以写作: *[title] {color:red;} 例子 2 与上面类似,可以只对有 href 属性的锚(a 元素)应用样式: a[href] {color:red;} 例子 3 还可以根据多个属性进行选择,只需将属性选择器链接在一起即可. 例如,为了将同时有 href 和

Selenium IDE CSS元素选择器

点击链接加入群[悦分享测试联盟]:https://jq.qq.com/?_wv=1027&k=5FiMKHH Css选择器 通过节点属性查找 .class                 选择 class="intro"的所有元素. #id                     选择 id="firstname"的所有元素. *                         选择所有元素. 通过节点关系查找 element element        

css(二)css选择器,伪类

前戏 前面我们说过CSS规则由选择器和声明组成,我们要给标签设置属性,那我们就要找到对应的标签,CSS选择器可以帮我们找到我们需要的标签 css选择器有: 标签选择器 类选择器 ID选择器 全局选择器 群组选择器 后代选择器 标签选择器 标签选择器前面我们用过,它是以HTML标签作为选择器 <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type&qu

这 30 类 CSS 选择器,你必须理解!

CSS 选择器是一种模式,用于选择需要添加样式的元素.平时使用最多也是最简单的就是 #id..class 和标签选择器,在 CSS 中还有很多更加强大更加灵活的选择方式,尤其是在 CSS3 中,增加了很多新的选择器,使得选择元素更加便捷,所以必须理解这些选择器,只有先理解了,多用几次,自然而然就记住了. 1.* [CSS2] 通配符,选择页面所有元素. 1 *{ 2 margin:0; 3 padding:0; 4 } 上面代码的作用是把页面上所有元素的内外边距设置为 0,这是最基本的清除默认 

转 css选择器

CSS是对网页设计师可用的最强大的工具之一.使用它我们可以在几分钟内改变一个网站的界面,而不用改变页面的标签.但是尽管事实上,我们每个人也都意识到了它是有用的,CSS 选择器远未发挥它们的潜力,有的时候我们还趋向于使用过多的和无用的class.id.div.span等把我们的HTML搞的很凌乱. 避免让这些“瘟疫”在你的标签中传播并保持其简洁和语义化的最佳方式,就是使用更复杂的CSS选择器,它们可以定位于指定的元素而不用使用额外的class或id,而且通过这种方式也可以让我们的代码和样式更加灵活