CSS元素定位之通过元素的标签或者元素的id、class属性定位详解


Posted in HTML / CSS onSeptember 23, 2022

前言

大部分人在使用selenium定位元素时,用的是xpath元素定位方式,因为xpath元素定位方式基本能解决定位的需求。xpath元素定位方式更直观,更好理解一些。

css元素定位方式往往被忽略掉了,其实css元素定位方式也有它的价值;相对于xpath元素定位方式来说,css元素定位方式更快,语法更简洁。

一、css元素定位:通过元素的标签或者元素的id、class属性定位

1、css元素定位方式可以通过元素的id、class、标签这三个常规属性直接定位。

2、举例:如下是百度输入框的的html代码:

<input id="kw" class="s_ipt" type="text" autocomplete="off" maxlength="100" name="wd"/>

①css元素定位使用#号表示id属性,如:#kw

②css元素定位方式使用.表示class属性,如.s_ipt

③css元素定位方式也可以直接使用标签名称,而没有任何标识符,如:input

CSS元素定位之通过元素的标签或者元素的id、class属性定位详解

二、css元素定位:通过元素的其它属性定位

1、css元素定位除了可以通过标签、class、id这三个常规属性定位外,也可以通过元素的其它属性定位。例如: 

CSS元素定位之通过元素的标签或者元素的id、class属性定位详解

三、css元素定位:通过标签与属性的组合来定位元素 

CSS元素定位之通过元素的标签或者元素的id、class属性定位详解

四、css元素定位:通过元素的层级关系来定位

1、css元素定位可以达到类似xpath元素定位通过元素的层级关系来定位,例如:

xpath元素定位: //form[@id='form']/span/input 和 //form[@class='fm']/span/input 也可以用css实现 

CSS元素定位之通过元素的标签或者元素的id、class属性定位详解

五、css元素定位:通过元素的并列索引来定位 

1、以下图为例:与四相似。 

CSS元素定位之通过元素的标签或者元素的id、class属性定位详解

2、css元素定位也可以通过索引option:nth-child(1)来定位子元素,这点与xpath写法用很大差异,其实很好理解,直接翻译过来就是第几个小孩 

CSS元素定位之通过元素的标签或者元素的id、class属性定位详解

六、css元素定位:通过对元素属性的逻辑运算来定位

1、css同样也可以实现逻辑运算,同时匹配两个属性,这里跟xpath不一样,无需写and关键字。

CSS元素定位之通过元素的标签或者元素的id、class属性定位详解

七、处理selenium中的css_selector定位元素的模糊匹配问题

① 匹配元素的id属性,先指定一个html标签,然后加上“#”符号,再加上id的属性值。

driver.find_element_by_css_selector('div#ID').click()

②匹配元素的class属性,先指定一个html标签,然后加上“.”符号,再加上class的属性值。

driver.find_element_by_css_selector('div.CLASS').click()

③匹配元素的其他属性。【这里不再是‘.’或者‘#’符号,而是采用了"标签名[属性名=属性值]"的方式定位元素】

driver.find_element_by_css_selector('div[name=NAME]').click()

④组合匹配【支持定位元素对象通过两组或两组以上的属性】

driver.find_element_by_css_selector('div[name=NAME][type=TYPE]').click()

⑤匹配头部

driver.find_element_by_css_selector('div[style^="sp.gif"]').click()

⑥匹配尾部

driver.find_element_by_css_selector('div[style$="sp.gif"]').click()

⑦匹配中间

driver.find_element_by_css_selector('div[style*="sp.gif"]').click()

到此这篇关于CSS元素定位之通过元素的标签或者元素的id、class属性定位的文章就介绍到这了,更多相关css元素定位内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

 
HTML / CSS 相关文章推荐
一款利用html5和css3实现的3D立方体旋转效果教程
Apr 26 HTML / CSS
使用CSS3的font-face字体嵌入样式的方法讲解
May 13 HTML / CSS
用CSS3实现无限循环的无缝滚动的实例代码
Jul 04 HTML / CSS
css3边框_动力节点Java学院整理
Jul 11 HTML / CSS
css3实现画半圆弧线的示例代码
Nov 06 HTML / CSS
用HTML5.0制作网页的教程
May 30 HTML / CSS
HTML5 Web Database 数据库的SQL语句的使用方法
Dec 09 HTML / CSS
Html5游戏开发之乒乓Ping Pong游戏示例(三)
Jan 21 HTML / CSS
详解HTML5中download属性的应用
Aug 06 HTML / CSS
探讨HTML5移动开发的几大特性(必看)
Dec 30 HTML / CSS
html5中canvas图表实现柱状图的示例
Nov 13 HTML / CSS
HTML5页面音频自动播放的实现方式
Jun 21 HTML / CSS
微信小程序纯CSS实现无限弹幕滚动效果
Sep 23 #HTML / CSS
使用 CSS 构建强大且酷炫的粒子动画效果
详解CSS中postion和opacity及cursor的特性
Aug 14 #HTML / CSS
html网页引入svg图片的4种方式
HTML静态页面获取url参数和UserAgent的实现
Aug 05 #HTML / CSS
CSS使用Flex和Grid布局实现3D骰子
Aug 05 #HTML / CSS
css中:last-child不生效的解决方法
Aug 05 #HTML / CSS
You might like
非常不错的MySQL优化的8条经验
2008/03/24 PHP
php基于str_pad实现卡号不足位数自动补0的方法
2014/11/12 PHP
php类的扩展和继承用法实例
2015/06/20 PHP
JavaScript 提升运行速度之循环篇 译文
2009/08/15 Javascript
jquery学习笔记二 实现可编辑的表格
2010/04/09 Javascript
JS 添加千分位与去掉千分位的示例
2013/07/11 Javascript
基于Jquery+Ajax+Json实现分页显示附效果图
2014/07/30 Javascript
JavaScript onkeypress事件入门实例(按下或按住一个键盘按键)
2014/10/17 Javascript
JsRender实用入门教程
2014/10/31 Javascript
Jquery 实现checkbox全选方法
2015/01/28 Javascript
基于jQuery Tipso插件实现消息提示框特效
2016/03/16 Javascript
简介BootStrap model弹出框的使用
2016/04/27 Javascript
JavaScript判断用户名和密码不能为空的实现代码
2016/05/16 Javascript
详解jQuery简单的表单应用
2016/12/16 Javascript
详解微信第三方小程序代开发
2017/06/23 Javascript
Js中async/await的执行顺序详解
2017/09/22 Javascript
js判断一个对象是数组(函数)的方法实例
2019/12/19 Javascript
[40:48]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第二局
2016/02/28 DOTA
python在命令行下使用google翻译(带语音)
2014/01/16 Python
详解C++编程中一元运算符的重载
2016/01/19 Python
浅述python中argsort()函数的实例用法
2017/03/30 Python
django输出html内容的实例
2018/05/27 Python
python lambda表达式在sort函数中的使用详解
2019/08/28 Python
Python+OpenCV实现实时眼动追踪的示例代码
2019/11/11 Python
Python变量作用域LEGB用法解析
2020/02/04 Python
python map比for循环快在哪
2020/09/21 Python
python 写一个性能测试工具(一)
2020/10/24 Python
详解java调用python的几种用法(看这篇就够了)
2020/12/10 Python
Python爬虫之Selenium库的使用方法
2021/01/03 Python
几道Java和数据库的面试题
2013/05/30 面试题
2014年前台文员工作总结
2014/12/08 职场文书
2015年收银工作总结范文
2015/04/01 职场文书
初中语文教学研修日志
2015/11/13 职场文书
MySQL Router实现MySQL的读写分离的方法
2021/05/27 MySQL
详解Oracle块修改跟踪功能
2021/11/07 Oracle
浅谈Redis变慢的原因及排查方法
2022/06/21 Redis