Selenium自动化 元素定位(Xpath和CSS)
2018-03-09 16:50
716 查看
http://www.cnblogs.com/zhongmeizhi/p/6296213.html http://www.cnblogs.com/zhongmeizhi/p/6296266.html
Xpath的使用方法: 例子 1:html/body/div[1]/div[2] (如果不熟悉html的朋友们,需要自行百度html。) 该xpath 表示 : 在 html标签下 -> body标签下 -> 第一个div标签下 -> 第二个div标签 很好理解,继续 例子 2:.//*[@id='content']/div[2]/ul 这样会有人不理解了 .//*[@id='content'] 到底是什么意思呢? . 代表当前路径 a//b 表示:在a标签下的子孙辈b标签 * 可以是任何标签 [@id='content'] 表示是 id 为 content 所以:这个例子的意思是: id 为 content 的任何子标签下面 -> 第二个 div标签下 -> ul 标签 Xpath基础学习完毕,接下来开始进阶学习 //p[text()='a'] :文本为 a 的p标签 //p[text()='a'] : 文本包含 a 的p标签 //a[@class='abc'] :class 为 a的 p标签 (当然咯。既然可以为 @class 就一定能用 @id ,为什么不联想下 @src 和@href呢?)
//p[not(@class='a')] :class 不为 a的 p标签
好了,进阶完毕,如果要使用更高阶的Xpath要先属性以上内容,然后联合 Selenium使用 Xpath和其他定位方式的比较:(主要是和CSS定位的对比) Xpath的最大好处是能向上查找,不过缺点是速度过慢。
CSS定位速度快,功能多,但是不能向上查找,比 xpath好用,是本人认为最好用的定位方式 大致用法总结: 下面都是精华哦
1、*:checked 选中*的checked元素
2、 li.refined.list.group.item (如果class中间有空格,可以.+.+.全写也可以只写任意一个)
.checkbox[type^='check'][onclick*='Bebe'][checked$='ed'] +a
(开头^= 包含*= 结尾$= )+a 是选中同级的后面的a3、 li a :选中 li 标签的后代 a5、 li>a :选中 li 标签的子元素 a4、 li,a :选中 li 和 a5、 li +a :选中 li 同级的 下一个 a6、 li ~a :选中 li 同级的 下面所有的 a7、 li>a:last-child / li>a:last-of-type : 选中 li 下最后面一个 a8、 li:not([class*='_']) : li 中的 calss 不含 '_' li:not(:nth-of-type(1)) : 不含第一个 li 的所有 li9、 li>a:nth-child(n) / li>a:nth-of-type(n) :选中 li 下第 n 个 a li>a:nth-last-child(n) / li>a:nth-last-of-type(n):选中 li 下,倒数第 n 个 a 如果 n = odd 表示奇数 如果 n = even 表示偶数
div h2:nth-child(n) : 当div的第n个子元素是h2的时候div h2:nth-of-type(n): div下第n个h2子元素10、 div[style] : div中包含 属性style 11、 li>a:only-child :li 下只有1个a的 a 标签
Xpath的使用方法: 例子 1:html/body/div[1]/div[2] (如果不熟悉html的朋友们,需要自行百度html。) 该xpath 表示 : 在 html标签下 -> body标签下 -> 第一个div标签下 -> 第二个div标签 很好理解,继续 例子 2:.//*[@id='content']/div[2]/ul 这样会有人不理解了 .//*[@id='content'] 到底是什么意思呢? . 代表当前路径 a//b 表示:在a标签下的子孙辈b标签 * 可以是任何标签 [@id='content'] 表示是 id 为 content 所以:这个例子的意思是: id 为 content 的任何子标签下面 -> 第二个 div标签下 -> ul 标签 Xpath基础学习完毕,接下来开始进阶学习 //p[text()='a'] :文本为 a 的p标签 //p[text()='a'] : 文本包含 a 的p标签 //a[@class='abc'] :class 为 a的 p标签 (当然咯。既然可以为 @class 就一定能用 @id ,为什么不联想下 @src 和@href呢?)
//p[not(@class='a')] :class 不为 a的 p标签
好了,进阶完毕,如果要使用更高阶的Xpath要先属性以上内容,然后联合 Selenium使用 Xpath和其他定位方式的比较:(主要是和CSS定位的对比) Xpath的最大好处是能向上查找,不过缺点是速度过慢。
CSS定位速度快,功能多,但是不能向上查找,比 xpath好用,是本人认为最好用的定位方式 大致用法总结: 下面都是精华哦
1、*:checked 选中*的checked元素
2、 li.refined.list.group.item (如果class中间有空格,可以.+.+.全写也可以只写任意一个)
.checkbox[type^='check'][onclick*='Bebe'][checked$='ed'] +a
(开头^= 包含*= 结尾$= )+a 是选中同级的后面的a3、 li a :选中 li 标签的后代 a5、 li>a :选中 li 标签的子元素 a4、 li,a :选中 li 和 a5、 li +a :选中 li 同级的 下一个 a6、 li ~a :选中 li 同级的 下面所有的 a7、 li>a:last-child / li>a:last-of-type : 选中 li 下最后面一个 a8、 li:not([class*='_']) : li 中的 calss 不含 '_' li:not(:nth-of-type(1)) : 不含第一个 li 的所有 li9、 li>a:nth-child(n) / li>a:nth-of-type(n) :选中 li 下第 n 个 a li>a:nth-last-child(n) / li>a:nth-last-of-type(n):选中 li 下,倒数第 n 个 a 如果 n = odd 表示奇数 如果 n = even 表示偶数
div h2:nth-child(n) : 当div的第n个子元素是h2的时候div h2:nth-of-type(n): div下第n个h2子元素10、 div[style] : div中包含 属性style 11、 li>a:only-child :li 下只有1个a的 a 标签
相关文章推荐
- 7.在用selenium2(WebDriver)做自动化时候,如果有的元素通过ID,Xpath,CSS selector不能定位的解决方案。
- Selenium 元素定位 CSS and XPath
- selenium使用Xpath+CSS+JavaScript+jQuery的定位方法 - 专治各种定位不准并发症
- selenium webdriver by xpath 定位元素
- Selenium2学习-002-Selenium2 Web 元素定位及 XPath 编写演示示例
- Selenium使用Xpath定位元素及实例(1)
- 在Selenium WebDriver中使用By.Xpath快速定位页面元素
- 模拟浏览器自动化测试工具Selenium之四cssSelector元素定位开发篇
- Selenium-CSS页面元素定位
- Python+Selenium xpath 定位遇到相同元素时的解决方法父节点找子节点
- 基于《Selenium 2自动化测试实战》的学习笔记(6)—— CSS 定位
- selenium元素定位之css:contains的使用
- Selenium使用Xpath定位元素及实例(2)
- Selenium2学习-009-WebUI自动化实战实例-007-Selenium 8种元素定位实战实例源代码(百度首页搜索录入框及登录链接)
- Selenium2 入门[1] —— 获取XPath来定位元素 : Frebug , FirePath 插件的安装及使用
- 浏览器检查selenium的xpath、css定位,助你轻松搞定元素定位
- 两份关于 selenium/xpath 元素定位的极品 pdf,同样适用于移动测试
- Web自动化框架LazyUI使用手册(3)--单个xpath抓取插件详解(selenium元素抓取,有此插件,便再无所求!)
- Python+Selenium的元素定位方法(xpath)
- 在Selenium WebDriver中使用By.Xpath快速定位页面元素