UI自动化测试|CSS元素定位实践

自动化测试元素定位是指在自动化测试过程中,通过特定的方法或策略来准确识别和定位页面上的元素,以便对这些元素进行进一步的操作或断言。这些元素可以是文本框、按钮、链接、图片等HTML页面上的任何可见或不可见的组件。

在自动化测试中,元素定位是至关重要的一步,因为测试脚本需要准确地与页面上的元素进行交互,以模拟用户的实际操作或验证页面的状态。如果元素定位不准确或失败,测试脚本将无法正确执行,导致测试失败或结果不准确。

这里分享CSS元素定位方法

  • 在 UI 自动化测试中,可以使用 CSS 选择器来定位元素。CSS 选择器可以根据元素的属性、类名、ID 等信息来选择元素。例如,可以使用"*id='myElement'"来选择具有 ID 为"myElement"的元素。也可以使用".myClass"来选择具有类名为"myClass"的元素。

  • 实际工作中,可以根据具体的 UI 结构和元素特征来选择合适的选择器进行定位。需要注意的是,CSS 选择器的可用性和准确性可能会受到页面结构和样式的影响,因此在实际使用中可能需要进行一些调整和尝试。同时可能需要结合博主之前分享的内容(UI自动化-(web元素定位XPath实操入门)-CSDN博客)和(UI自动化-(web元素定位基础)-CSDN博客)进行综合衡量,选择最适合的元素定位方式。

  • CSS定位元素的方法:find_element_by_css_selector(css_selector) # 括号中css_selector表示的是CSS选择器表达式

    01 CSS常用的定位方法

    1)ID 选择器:通过元素的 ID 属性进行定位。例如,#elementId 表示选择具有 ID 为 "elementId" 的元素。

    2)类选择器:根据元素的类名进行定位。例如,.className 表示选择具有类名为 "className" 的元素。

    3)元素选择器:直接使用元素名称进行定位。例如,div 表示选择所有的

    元素。

    4)属性选择器:通过元素的属性进行定位。例如,attribute 表示选择具有特定属性的元素,attribute=value 表示选择属性值为特定值的元素。

    5)组合选择器:可以使用组合的方式来定位元素。例如,div.className 表示选择具有类名为 "className" 的

    元素。

    6)层级选择选择器

    父子层级关系选择器 :使用子选择器来选择父元素下的子元素。例如,parent > child 表示选择父元素 "parent" 下的直接子元素 "child"。

    隔代层级关系选择器 例如, element1 element2 通过element1来找element2, 并且element2是element1的后代元素

    7)兄弟元素选择器:选择相邻的兄弟元素。例如,prev + next 表示选择前一个元素 "prev" 的下一个兄弟元素 "next"。

    一、id选择器

    表达式:#id # 表示通过元素的ID属性进行元素选择 id 表示的的id属性的属性值

    示例:#kw

二、class选择器

表达式:.class # .表示通过元素的class属性进行元素选择, class表示的class属性的其中一个属性值

示例:.s_ipt

示例代码:

复制代码
# 导包
import time
from selenium import webdriver
# 创建浏览器驱动对象
driver = webdriver.Chrome()
# 打开百度网站
driver.get("https://www.baidu.com")
# 通过id选择器定位到输入框并输入"百度一下,"
driver.find_element_by_css_selector("#kw").send_keys("百度一下,")
# 等待2S
time.sleep(2)
# 通过class选择器定位到输入框并输入"你就知道!"
driver.find_element_by_css_selector(".s_ipt").send_keys("你就知道!")
# 等待3S
time.sleep(3)
# 退出
driver.quit()

三、元素选择器

通过元素标签名称来选择元素 。

表达式:tag_name

四、属性选择器

通过元素的属性来选择元素。

表达式:attribute='value' #attribute 表示的是属性名称,value表示的是属性值

注意使用class属性时,需要带上class的全部属性值 (有些class属性值有多个字符串,中间有空格,需要都完整带上)

示例:name="wd"

示例代码:​​​​​​​

复制代码
# 导包
import time
from selenium import webdriver
# 创建浏览器驱动对象
driver = webdriver.Chrome()
# 打开百度网站
driver.get("https://www.baidu.com")
# 通过属性选择器定位到输入框并输入"百度一下,"
driver.find_element_by_css_selector('[name="wd"]').send_keys("百度一下,你就知道!")
# 等待3S
time.sleep(3)
# 退出
driver.quit()

五、层级选择器

父子层级关系选择器

表达式:element1>element2 通过element1来找element2,并且element2是element1的直接子元素

示例:span > input

隔代层级关系选择器

表达式:element1 element2 通过element1来找element2, 并且element2是element1的后代元素

示例:form input

代码示例:​​​​​​​

复制代码
# 导包
import time
from selenium import webdriver
# 创建浏览器驱动对象
driver = webdriver.Chrome()
# 打开百度网站
driver.get("https://www.baidu.com")
# 通过父子层级关系选择器定位到输入框并输入"百度一下,"
driver.find_element_by_css_selector("span>input").send_keys("百度一下,你就知道!")
# 等待3S
time.sleep(3)
# 退出
driver.quit()

六、兄弟元素选择器

选择相邻的兄弟元素。CSS 的兄弟选择器是用来选择与指定元素相邻的元素的一种选择器

表达式:"element + element"

其中第一个元素是要选择的相邻元素,第二个元素是要选择的相邻元素的兄弟元素。例如,"div + input"选择器会选择所有紧挨着 div 元素的 input 元素。

示例:div+input

相关推荐
сокол1 小时前
【网安-研判-WireShark流量分析】HTTPS流量解密
测试工具·https·wireshark
带刺的坐椅1 小时前
SolonCode(编码智能体)支持鸿蒙 PC
java·web·ai编程·harmonyos·soloncode·鸿蒙 pc
李二。1 小时前
HarmonyOS NEXT 定时关机工具:从设计到实现的完整技术解析
华为·harmonyos
yuegu7771 小时前
HarmonyOS应用<节气通>开发第15篇:学习记录页面
学习·信息可视化·harmonyos
龙井>_<2 小时前
vsCode解决css代码补全不生效问题,UnoCSS插件失效修复
前端·css·ide·vscode
阿钱真强道2 小时前
28 鸿蒙LiteOS RK2206 LwIP Raw API 实现无阻塞UDP双向通信
udp·harmonyos·鸿蒙·lwip·开源鸿蒙
Davina_yu2 小时前
网络请求基础:使用http模块发起GET/POST请求(12)
harmonyos·鸿蒙·鸿蒙系统
2501_918126912 小时前
一个上帝类程序作画
前端·css·css3
伶俜662 小时前
# [特殊字符] 零基础学 ArkUI 手势(专题五):从点击到多指触控,一网打尽 6 种手势
学习·华为·harmonyos