使用CSS选择器定位页面元素
摘录:http://blog.csdn.net/defectfinder/article/details/51734690
CSS选择器也是一个非常好用的定位元素的方法,甚至比Xpath强大。在自动化里我们用CSS选择器来定位页面元素一定要牢记一个准则:唯一定位,通常使用CSS选择器修改样式时会尽量多的选择元素,但是,在自动化里,必须要唯一定位到元素,否则自动化很可能因为找不到页面元素而失败。CSS选择器有很多,像标签选择器、类选择器、ID选择器、关系选择器、伪类选择器、分组选择器等等,但是只需要掌握常用的几种就可以满足定位元素的需求。
以下述HTML为例,总结下CSS选择器的用法:
<div id="menu" class="menu" title="menu">
<ul>
<li id="first" class="catagory book">
<a id="book"></a>
</li>
<li id="second" class="catagory food">
<a id="food"></a>
</li>
<li>
<a id="clothes"></a>
</li>
<li title="submenu">
<a id="furniture"></a>
</li>
</ul>
<a href="....">Welcome to Our Store</a>
</div>
1. 标签选择器
使用HTML标签来选择元素,例如:
driver.findElement(By.cssSelector("li")); //将选择所有li元素
driver.findElement(By.cssSelector("a")); //将选择所有a元素
2. 类选择器
使用类名来选择元素,使用方法:.class, 例如:
driver.findElement(By.cssSelector("div.menu")); //将选择class为menu的div元素driver.findElement(By.cssSelector(".catagory")); //将选择id为first的元素和id为second的元素,因为这两个元素的class里都含有catagory
3. ID选择器
使用ID来选择元素,使用方法:#id,例如:
driver.findElement(By.cssSelector("a#clothes")); //将选择id为clothes的a元素
也可以写成:
driver.findElement(By.cssSelector("#clothes")); //因为id是唯一的所以还是会选择id为clothes的a元素
3. 关系选择器
a.div,p 作用:选择所有div元素和p元素
b.div>p 作用:选择div的直接子元素中的所有p元素
c. div p 作用:选择div的后代元素中的所有p元素
4. 属性选择器
a. [title] 作用:选择所有具有title属性的元素
b. [title='menu'] 作用:选择所有title属性值等于'menu'的元素
c. [title~='menu'] 作用:选择所有title属性值包含menu的元素,注意:menu必须是一个word,
且有空格与其他单词分开
d. [title*='menu'] 作用:选择所有title属性值包含menu的元素,注意:此时menu为substring,而不是word
e. [title|='menu'] 作用:选择所有title属性值以menu开头或者等于menu的元素
f. [title^='menu'] 作用:选择所有title属性值以menu开头的元素
g. [title$='menu'] 作用:选择所有title属性值以menu结尾的元素
h. div[title='menu'] 作用: 选择所有title属性值等于menu的div元素
4. 通用选择器
方法:*
例如: div ul *; //选择div ul 下的所有子元素,包括li和a元素
5. 伪类选择器
伪类选择器很多,只总结下用过的:nth-child(n)
例如:p:nth-child(2) 作用:选择作为第二孩子的p元素
使用CSS选择器定位页面元素的更多相关文章
- web自动化测试---css方式定位页面元素
css方式定位的方法也有很多,相较于xpath更灵活一点,下面就介绍下使用方法(以百度输入框为例) 1.通过tag来定位,可以写成如下: driver.find_element_by_css_sele ...
- 『心善渊』Selenium3.0基础 — 8、使用CSS选择器定位元素
目录 1.CSS选择器介绍 2.CSS选择器定位语法 3.Selenium中使用CSS选择器定位元素 (1)通过属性定位元素 (2)通过标签定位元素 (3)通过层级关系定位元素 (4)通过索引定位元素 ...
- 使用 jQuery 选择器获取页面元素后,利用 jQuery 对象的 css() 方法设置其样式。
查看本章节 查看作业目录 需求说明: 使用 jQuery 选择器获取页面元素后,利用 jQuery 对象的 css() 方法设置其样式. 要求如下: 点击页面的"更改样式"按钮后, ...
- 使用 jQuery 选择器获取页面元素,然后利用 jQuery 对象的 css() 方法设置其 display 样式属性,从而实现显示和隐藏效果。
查看本章节 查看作业目录 需求说明: 使用 jQuery 选择器获取页面元素,然后利用 jQuery 对象的 css() 方法设置其 display 样式属性,从而实现显示和隐藏效果. 具体要求如下: ...
- 使用 jQuery 基本选择器获取页面元素,然后利用 jQuery 对象的 css() 方法动态设置 <span> 和 <a> 标签的样式
查看本章节 查看作业目录 需求说明: 使用 jQuery 基本选择器获取页面元素,然后利用 jQuery 对象的 css() 方法动态设置 <span> 和 <a> 标签的样式 ...
- CSS选择器定位的使用
CSS 可以比较灵活选择控件的任意属性,一般情况下定位速度要比XPath 快,但对于初学者来说比较难以学习使用,下面我们就详细的介绍CSS 的语法与使用.一.CSS 选择器的常见语法: 例如下面一段代 ...
- 『心善渊』Selenium3.0基础 — 10、使用Seleniun定位页面元素归纳总结(超详细)
目录 1.Selenium中8种基本元素定位方式 (1)单数形式 (2)复数形式 2.By类定位的8种定位方式 (1)单数形式 (2)复数形式 3.XPath定位总结 (1)基础定位语法 (2)属性定 ...
- 定位页面元素之xpath详解以及定位不到测试元素的常见问题
一.定位元素的方法 id:首选的识别属性,W3C标准推荐为页面每一个元素设置一个独一无二的ID属性, 如果没有且很难找到唯一属性,解决方法:(1)找开发把id或者name加上.如果不行,解决思路可以是 ...
- selenium中CSS选择器定位
selenium元素定位,CSS选择器定位效率会高很多. CSS选择器用于选择你想要的元素的样式的模式.表格摘自“菜鸟教程”,具体用法可去查阅 选择器 示例 示例说明 CSS .class .intr ...
随机推荐
- C++如何禁止对象的复制操作
最容易想到的是将拷贝构造函数与赋值函数声明为private.但是,private只是说外部不能直接调用,但是可以间接通过类的成员函数与友元函数对其访问.那么怎么办呢? ---->在类中,允许声明 ...
- java高级 - java利用listener实现回调,即观察者模式
https://blog.csdn.net/lin_sir6/article/details/70052954
- 统计分析与R软件-chapter2-6
2.6 列表与数据框 2.6.1 列表 1.列表的构造 列表是一种特别的对象集合,它的元素也由序号(下标)区分,但是各元素的类型可以是任意对象,不同元素不必是同一类型,元素本身允许是其他复杂数据类型, ...
- 虚拟机配置nginx无法访问80端口
在虚拟机中配置成功并正常启动nginx服务后,但浏览器无法访问服务,原因可能是linux中未开放80端口(nginx默认的端口为80). 1.执行该命令打开端口文件 vi /etc/sysconfig ...
- 【转】模块(configparser+shutil+logging)
[转]模块(configparser+shutil+logging) 一.configparser模块 1.模块介绍 configparser用于处理特定格式的文件,其本质上是利用open来操作文件. ...
- Mysqli扩展类
Mysqli 扩展是需要php5.0版本以上的支持 主要有以下的3个类 MySQLi类,基本操作 MySQL_STMT类,预处理操作 MySQLi_RESULT类,结果操作 Mysqli的编写有两种方 ...
- 基于React 的前端UI开发框架 及与Electron 的结合 https://cxjs.io/
1.cxjs 基于React 的前端UI开发框架 https://cxjs.io/ coreu http://coreui.io/ 2.antd-admin ...
- Windows PowerShell 入門(4)-変数と演算子
Windows PowerShellにおける変数と演算子の使用方法について学びます.今回は代表的な演算子として.算術演算子.代入演算子.論理演算子.比較演算子.範囲演算子.置換演算子.ビット演算子.型 ...
- Web QQ 协议 登录加密算法 —— VC++实现
BOOL ToHexStr(const CHAR * lpStr, int nSrcLen, CHAR * lpHex, int nDestLen) { const CHAR cHexTable[] ...
- vc++基础班[27]---实现一个简单的任务管理器
因为任务管理器中涉及到进程的枚举操作,所以把两节课的知识点合并到一起来讲! ①.设计界面.以及列表控件变量的绑定: ②.列表控件样式的指定: m_TaskList.SetExtendedSty ...