自动化测试—选择器

2023-09-21 14:43:16

根据id选择名字:

<input  type="text" id='searchtext' />

element = wd.find_element(By.CSS_SELECTOR, '#searchtext')
element.send_keys('你好')


根据class选择元素的两种方式:

1.By.CLASS_NAME:

elements = wd.find_elements(By.CLASS_NAME, 'animal')

2.使用选择器:

elements = wd.find_elements(By.CSS_SELECTOR, '.animal')

子代选择器和后代选择器

子代选择器和后代选择器是 CSS 中用于选择元素的不同方式,它们有以下区别:

子代选择器(Child Selector):子代选择器使用 > 符号,用于选择父元素直接子元素。例如,.parent > .child 表示选择类名为 “parent” 的元素的直接子元素中的类名为 “child” 的元素。子代选择器只匹配直接子元素,不会匹配更深层次的后代元素。

后代选择器(Descendant Selector):后代选择器使用空格,用于选择祖先元素下的所有后代元素。例如,.parent .child 表示选择类名为 “parent” 的元素下所有类名为 “child” 的后代元素。后代选择器会匹配任意深度的后代元素,包括直接子元素、孙子元素、曾孙元素等等。

总结来说,子代选择器仅匹配父元素的直接子元素,而后代选择器则匹配父元素下的所有后代元素,无论其层级深度如何。因此,根据具体需求,我们可以选择使用子代选择器或后代选择器来精确地选择所需元素。


属性选择器

id、class 都是web元素的 属性 ,因为它们是很常用的属性,所以css选择器专门提供了根据 id、class 选择的语法。

那么其他的属性呢?

1.选择指定的herf属性

<a href="http://www.miitbeian.gov.cn">苏ICP备88885574</a>

# 根据属性选择元素
element = wd.find_element(By.CSS_SELECTOR, '[href="http://www.miitbeian.gov.cn"]')

这个表达式的意思是,选择 属性href值为 http://www.miitbeian.gov.cn 的元素。

2.选择全部为herf的值:

[href] 

3.指定标签的属性,并且指定标签中某个属性的值

div[class='SKnet'] 

4.属性中包含某一段值:

要选择a节点,里面的href属性包含了 miitbeian 字符串,就可以这样写

a[href*="miitbeian"]

5.还可以 选择 属性值 以某个字符串开头的元素

要选择a节点,里面的href属性以 http 开头 ,就可以这样写

a[href^="http"]

6.选择以什么结尾的元素

要选择a节点,里面的href属性以 gov.cn 结尾 ,就可以这样写

a[href$="gov.cn"]

7.同时选择多个元素的限制:

<div class="misc" ctype="gun">沙漠之鹰</div>

 div[class=misc][ctype=gun]

小结:
1指定的’[href=“http://www.miitbeian.gov.cn”]’
2.全部的’[href]’
3.指定标签指定属性div[class=‘SKnet’]
4.包含关系a[href*=“miitbeian”]
5.开头包含a[href^=“http”]
6.结尾包含a[href$=“gov.cn”]
7.多个限制 div[class=misc][ctype=gun]


组选择

如果我们要 同时选择所有class 为 plant 和 class 为 animal 的元素。

.plant , .animal

在这里插入图片描述
我们要选择所有 唐诗里面的作者和诗名, 也就是选择所有 id 为 t1 里面的 span 和 p 元素

错误写法

#t1 > span,p

正确写法:

#t1 > span , #t1 > p

注意:组选择结果列表中,选中元素排序, 不是 组表达式的次序, 而是符合这些表达式的元素,在HTML文档中的出现的次序。

父元素的第n个子节点

我们可以指定选择的元素 是父元素的第几个 某类型的 子节点

使用 nth-of-type

比如,

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

可以像上面那样思考:选择的是 第2个子元素,并且是span类型

所以这样可以这样写 span:nth-child(2)

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

所以也可以这样写 span:nth-of-type(1)

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

当然也可以反过来, 选择父元素的 倒数第几个某类型 的子节点

使用 nth-last-of-type

像这样

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

选择奇数和偶数节点:

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

比如

p:nth-child(even)

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

p:nth-child(odd)

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

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


相邻兄弟节点选择

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

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

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

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

后续所有兄弟节点选择

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

更多推荐

百望云亮相服贸会 重磅发布业财税融Copilot

小望小望,我要一杯拿铁!好的,已下单成功,请问要开具发票嘛?在获得确认的指令后,百小望AI智能助手按用户要求成功开具了一张电子发票!这是2023年服贸会国家会议中心·成果发布现场,百望云向与会嘉宾展示的业财税融Copilot产品的一个应用场景:在对接百望云后,咖啡师只需专注地制作咖啡,百小望AI智能助手即能完成接单、支

【深入浅出设计模式--命令模式】

深入浅出设计模式--命令模式一、背景二、问题三、解决方案四、试用场景总结五、后记一、背景命令模式是一种行为设计模式,它可以将用户的命令请求转化为一个包含有相关参数信息的对象,命令的发送者不需要知道接收者是如何处理这条命令,多个功能入口可以发送同一命令,避免多处多次实现相同功能的冗余代码。另外可以对命令进行延迟处理,或放

【RocketMQ】消息中间件学习笔记

【RocketMQ】消息中间件学习笔记【一】RocketMQ概述【1】MQ简介【2】MQ永用途(1)限流削峰(2)异步解耦(3)数据收集【3】RocketMQ介绍(1)RocketMQ特点(2)RocketMQ优势【4】RocketMQ基本概念(1)NameServer(2)Broker(3)生产者(Producer)

亚马逊六页纸

一、什么是亚马逊6页纸?亚马逊在内部管理实践中,特别是会议管理上,禁止使用PPT,而是使用一种简洁的「结构化备忘录」,也就是我们熟知的“六页纸”。二、具体解释1、Whatwedo?背景,什么情况下,我们做了什么。因为XXX产品即将量产,我们已启动XXX下一版升级产品的规划。今天开会的主题就是汇报与同步目前的规划情况。2

JS的WebAPI

WebAPI背景知识什么是WebAPI前面学习的JS分成三个大的部分ECMAScript:基础语法部分DOMAPI:操作页面结构BOMAPI:操作浏览器WebAPI就包含了DOM+BOM.什么是APIAPI是一个更广义的概念.而WebAPI是一个更具体的概念,特指DOM+BOM,所谓的API本质上就是一些现成的函数/对

【视觉SLAM入门】9.1 建图1---SLAM任务,稠密地图构建,立体视觉,RGBD,八叉树,点云地图等各种不同地图

"讷为君子,寡为吉人”1.立体稠密地图1.1地图构建1.2分析立体相机稠密建图效果2.RGB-D稠密地图2.1地图对比2.1.1八叉树地图3.建图?定位?孰轻孰重3.1鬼影问题3.2三维重建4.总结SLAM的功能:直到现在我们可以知道SLAM包含:定位,导航,避障,重建,交互。在不同的功能下也有不同的地图。之前的都是稠

计算机毕设 python图像检索系统设计与实现

文章目录0前言1课题简介2图像检索介绍(1)无监督图像检索(2)有监督图像检索3图像检索步骤4应用实例5最后0前言🔥这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。为了大家能够顺利以及最少的精力通过

Rockchip RK3399 - USB触摸屏接口驱动

----------------------------------------------------------------------------------------------------------------------------开发板:NanoPC-T4开发板eMMC:16GBLPDDR3:4GB显

spring:实现初始化动态bean|获取对象型数组配置文件

0.引言近期因为要完成实现中间件的工具包组件,其中涉及要读取对象型的数组配置文件,并且还要将其加载为bean,因为使用了spring4.3.25.RELEASE版本,很多springboot的相关特性无法支持,因此特此记录,以方便后续同学有相同情况可以参考1.获取对象型数组配置文件首先对象型数组配置文件如下所示:min

什么是实时操作系统(UCOS简介)

uC/OS-III官网:HomePage-WestonEmbeddedSolutions一、裸机与RTOS介绍下面我将从不同方面阐述裸机与试试操作系统的区别,从而进一步介绍裸机和实时操作系统定义:裸机:裸机指的是没有任何操作系统或软件层的硬件系统。在裸机状态下,程序可以直接访问硬件资源。实时操作系统:实时操作系统(RT

[Python进阶] 程序打包之Pyinstaller参数介绍

5.4Pyinstaller参数介绍5.4.1选项参数参数名说明-h、–help查看Pyinstaller所有命令的用法和帮助-v、–version查看当前Pyinstaller版本–distpathDIR设置dist位置,默认当前目录–workpathWORKPATH设置build位置,默认当前目录-y、–nocon

热文推荐