当前位置: 首页 > news >正文

selenium教程 —— css定位

说明:本篇博客基于selenium 4.1.0

selenium-css定位

element_css = driver.find_element(By.CSS_SELECTOR, 'css表达式')
复制代码

css定位说明

selenium中的css定位,实际是通过css选择器来定位到具体元素,css选择器来自于css语法

css定位优点

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

调试方法

方法1:在浏览器开发者模式的elements中,Ctrl+F搜索栏输入css表达式 方法2:在浏览器开发者模式的console中,按如下格式验证表达式

$("css表达式")   # 注:表达式中存在引号,则使用单引号,'$'可更换为$$
复制代码

css选择器语法

基础选择器

选择器格式示例示例说明
选择全部**选择全部元素
标签选择器html标签p选择所有<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属性),值表现为以空格隔开,使用时需要单个取出使用

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036

组合选择器

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

选择器格式示例示例说明
标签指定属性标签加属性描述input#su选择所有id='su'的<input>元素
并集元素1,元素2div,p选择所有<div>和<p>元素
父子元素1>元素2div>p选择所有父级是<div>的<p>元素
后代元素1 元素2div p选择<div>中的所有<p>元素
相邻元素1+元素2div+p选择<div>同级后的相邻<p>元素
同级元素1~元素2div~p选择<div>同级后的所有<p>元素

伪属性选择器

伪属性选择器是指元素在html中实际并不存在该属性,是由css定义的拓展描述属性

选择器格式示例示例说明
唯一子元素:only-childp:only-child选择所有<p>元素且该元素是其父级的唯一一个元素
第一子元素:first-childp:first-child选择所有<p>元素且该元素是其父级的第一个元素
最后子元素:last-childp:last-child选择所有<p>元素且该元素是其父级的最后一个子元素
顺序选择器:nth-child(n)p:nth-child(2)选择所有<p>元素且该元素是其父级的第二个子元素
顺序类型选择器:nth-of-type(n)p:nth-of-type(2)选择所有<p>元素且该元素是其父级的第二个<p>元素
倒序选择器:nth-last-child(n)p:nth-last-child(2)选择所有<p>元素且该元素是其父级的倒数第二个子元素
倒序类型选择器:nth-last-of-type(n)p:nth-last-of-type(2)选择所有<p>元素且该元素是其父级的倒数第二个<p>元素

今天的分享就到此结束了, 如果文章对你有帮助,记得点赞,收藏,加关注。会不定期分享一些干货哦...... 

http://www.lryc.cn/news/196153.html

相关文章:

  • Leetcode 1834. Single-Threaded CPU (堆好题)
  • 21-数据结构-内部排序-交换排序
  • 5-k8s-探针介绍
  • 【网络安全 --- MySQL数据库】网络安全MySQL数据库应该掌握的知识,还不收藏开始学习。
  • 【MyBatis系列】- 什么是MyBatis
  • 【Linux】Ubuntu美化bash【教程】
  • 微信小程序仿苹果负一屏由弱到强的高斯模糊
  • js中的new方法
  • 机器学习-无监督算法之降维
  • ubuntu20.04下Kafka安装部署及基础使用
  • 汉得欧洲x甄知科技 | 携手共拓全球化布局,助力出海中企数智化发展
  • 【Javascript保姆级教程】显示类型转换和隐式类型转换
  • C++算法前缀和的应用:分割数组的最大值的原理、源码及测试用例
  • gitlab自编译 源码下载
  • SBD(Schottky Barrier Diode)与JBS(Junction Barrier Schottky)
  • HANA:计算视图-图形化Aggregation组件-踩坑小记(注意事项)
  • 【milkv】更新rndis驱动
  • 基于混沌博弈优化的BP神经网络(分类应用) - 附代码
  • 基于人工水母优化的BP神经网络(分类应用) - 附代码
  • 【C++】哈希学习
  • Nginx的安装——window环境
  • C语言笔记之指针
  • 【 OpenGauss源码学习 —— 列存储(CU)(二)】
  • Java并发面试题:(四)synchronized和lock区别
  • 使用Nginx实现采集端和数据分析平台的数据加密传输
  • appium---如何判断原生页面和H5页面
  • 【WIFI】【WPS】如何从log角度判断WPS 已经连接上
  • [正式学习java①]——java项目结构,定义类和创建对象,一个标准javabean的书写
  • day36
  • 五. 激光雷达建图和定位方案-开源SLAM