软件测试/测试开发|Python selenium CSS定位方法详解

简介: 软件测试/测试开发|Python selenium CSS定位方法详解

image.png

简介

CSS选择器是一种用于选择HTML元素的模式。它允许我们根据元素的标签名、类名、ID、属性等属性进行选择。CSS选择器的语法简单而灵活,是前端开发中常用的定位元素的方式。

selenium中的css定位,实际是通过css选择器来定位到具体元素,css选择器来自于css语法。CSS定位有以下显著优点:

  1. 语法简洁
  2. 对比其他定位方式,定位效率更快
  3. 对比其他定位方式,定位更稳定

css选择器语法

基础选择器

选择器 格式 示例 示例说明
选择全部 * * 选择全部元素
标签选择器 html标签 p 选择所有\

元素

ID选择器 #id属性值 #su 选择所有id='su'的元素
类选择器 .class属性值 .s_btn 选择所有class='s_btn'的元素
属性选择器1 [属性名] [type] 选择所有带type属性的元素
属性选择器2 [属性名='属性值'] [type="submit"] 选择所有type="submit"的元素
属性选择器3 [属性名~='属性值'] [type~="submit"] 选择所有type包含"submit"的元素
属性选择器4 [属性名\ ='属性值'] [type\ ="submit"] 选择所有type以"submit"开头的元素

备注:某些元素属性有多个值(如class属性),值表现为以空格隔开,使用时需要单个取出使用

组合选择器

组合选择器就是同时使用多个基础选择器,从而更好地筛选出目标元素

选择器 格式 示例 示例说明
标签指定属性 标签加属性描述 input#su 选择所有id='su'的\元素
并集 元素1,元素2 div,p 选择所有\
和\

元素

父子 元素1>元素2 div>p 选择所有父级是\
的\

元素

后代 元素1 元素2 div p 选择\
中的所有\

元素

相邻 元素1+元素2 div+p 选择\
同级后的相邻\

元素

同级 元素1~元素2 div~p 选择\
同级后的所有\

元素

伪属性选择器

伪属性选择器是指元素在html中实际并不存在该属性,是由css定义的拓展描述属性
选择器 | 格式 | 示例 | 示例说明
:- | :- | :- | :-
唯一子元素 | :only-child | p:only-child | 选择所有\

元素且该元素是其父级的唯一一个元素
第一子元素 | :first-child | p:first-child | 选择所有\

元素且该元素是其父级的第一个元素
最后子元素 | :last-child | p:last-child | 选择所有\

元素且该元素是其父级的最后一个子元素
顺序选择器 | :nth-child(n) | p:nth-child(2) | 选择所有\

元素且该元素是其父级的第二个子元素
顺序类型选择器 | :nth-of-type(n) | p:nth-of-type(2) | 选择所有\

元素且该元素是其父级的第二个\

元素
倒序选择器 | :nth-last-child(n) | p:nth-last-child(2) | 选择所有\

元素且该元素是其父级的倒数第二个子元素
倒序类型选择器 | :nth-last-of-type(n) | p:nth-last-of-type(2) | 选择所有\

元素且该元素是其父级的倒数第二个\

元素

使用示例

  1. 通过id选择器查找

通过css定位的id属性查找百度首页的输入框元素,代码如下:

from selenium import webdriver
from selenium.webdriver.common.by import By



driver = webdriver.Chrome()
driver.get("https://www.baidu.com") #打开网页
driver.maximize_window()

element = driver.find_element(By.CSS_SELECTOR, '#kw')
print(element)
  1. 通过class选择器查找

通过元素的.class属性值查找元素,我们还是以百度首页的输入框为例,代码如下:

from selenium import webdriver
from selenium.webdriver.common.by import By



driver = webdriver.Chrome()
driver.get("https://www.baidu.com") #打开网页
driver.maximize_window()

element = driver.find_element(By.CSS_SELECTOR, '.s_ipt')
print(element)
  1. 通过标签定位

我们继续使用百度首页输入框为例,输入框一般有input标签,代码如下:

from selenium import webdriver
from selenium.webdriver.common.by import By



driver = webdriver.Chrome()
driver.get("https://www.baidu.com") #打开网页
driver.maximize_window()

element = driver.find_element(By.CSS_SELECTOR, 'input')
print(element)
  1. 层级选择器

根据元素的父子关系来选择,实例:直接子元素层级关系,使用>号,继续以百度首页的搜索框为例,代码如下:

from selenium import webdriver
from selenium.webdriver.common.by import By



driver = webdriver.Chrome()
driver.get("https://www.baidu.com") #打开网页
driver.maximize_window()

element = driver.find_element(By.CSS_SELECTOR, '.bg.s_ipt_wr > input')
print(element)

注:如果两个元素之间不是直接的子元素关系,我们需要使用空格隔开,当有多级的层级关系时,我们可以使用duoge>符号,示例如下:

from selenium import webdriver
from selenium.webdriver.common.by import By



driver = webdriver.Chrome()
driver.get("https://www.baidu.com") #打开网页
driver.maximize_window()

element = driver.find_element(By.CSS_SELECTOR, 'form input')
print(element)

------------------------------------

from selenium import webdriver
from selenium.webdriver.common.by import By



driver = webdriver.Chrome()
driver.get("https://www.baidu.com") #打开网页
driver.maximize_window()

element = driver.find_element(By.CSS_SELECTOR, 'form > span > input')
print(element)

总结

CSS定位是非常高效的一种定位方式,代码也非常简洁,相对于xpath定位方法来说,它的定位速度快,在能够使用CSS定位的情况下,推荐使用CSS定位来实现元素的定位。希望本文能够帮到大家!

相关文章
|
3月前
|
安全 关系型数据库 测试技术
学习Python Web开发的安全测试需要具备哪些知识?
学习Python Web开发的安全测试需要具备哪些知识?
121 61
|
3月前
|
安全 测试技术 网络安全
如何在Python Web开发中进行安全测试?
如何在Python Web开发中进行安全测试?
|
2月前
|
IDE 测试技术 开发工具
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
在Python开发中,调试是提升效率的关键技能。本文总结了10个实用的调试方法,涵盖内置调试器pdb、breakpoint()函数、断言机制、logging模块、列表推导式优化、IPython调试、警告机制、IDE调试工具、inspect模块和单元测试框架的应用。通过这些技巧,开发者可以更高效地定位和解决问题,提高代码质量。
325 8
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
|
3月前
|
监控 安全 测试技术
如何在实际项目中应用Python Web开发的安全测试知识?
如何在实际项目中应用Python Web开发的安全测试知识?
118 61
|
3月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
188 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
2月前
|
敏捷开发 测试技术 持续交付
自动化测试之美:从零开始搭建你的Python测试框架
在软件开发的马拉松赛道上,自动化测试是那个能让你保持节奏、避免跌宕起伏的神奇小助手。本文将带你走进自动化测试的世界,用Python这把钥匙,解锁高效、可靠的测试框架之门。你将学会如何步步为营,构建属于自己的测试庇护所,让代码质量成为晨跑时清新的空气,而不是雾霾中的忧虑。让我们一起摆脱手动测试的繁琐枷锁,拥抱自动化带来的自由吧!
|
3月前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
172 3
|
3月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
97 1
|
3月前
|
Web App开发 测试技术 数据安全/隐私保护
自动化测试的魔法:使用Python进行Web应用测试
【10月更文挑战第32天】本文将带你走进自动化测试的世界,通过Python和Selenium库的力量,展示如何轻松对Web应用进行自动化测试。我们将一起探索编写简单而强大的测试脚本的秘诀,并理解如何利用这些脚本来确保我们的软件质量。无论你是测试新手还是希望提升自动化测试技能的开发者,这篇文章都将为你打开一扇门,让你看到自动化测试不仅可行,而且充满乐趣。
|
1月前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。

热门文章

最新文章