3-xpath高级语法、css高级语法

一、xpath定位高级语法

xpath 使用路径表达式来选取 xml 文档或html文档上的节点或节点集,分别有绝对路径、相对路径两种表达方式。

缺点: webdriver会将整个页面的所有元素进行扫描以定位我们所需要的元素,若脚本中大量使用xpath做元素定位,脚本的执行速度会变慢

表达式 描述
. 选取当前节点
.. 选取当前节点的父节点
/ 从根节点选取,默认情况下当前节点是 html
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置
nodename 选取此节点的所有子节点,类似 css 中的标签选择器
@ 选取属性

绝对路径定位
以“/”开头,从最顶层html开始往下找,像文件夹一样写的完整路径
缺点:一旦页面结构发生改变,路径也随之失效,必须重新定位

相对路径定位
以“//”开头,可以用任意层级的元素作为起点

索引定位:
//input[2]   表示匹配任意节点下的第二个input标签

属性定位:

表达式 含义
/*[@class] 表示匹配下一级中,所有具备class属性的任意标签
//div[@id=‘abc’ and @class=‘abc’] 表示匹配任意节点下,id为abc且class为abc的div标签
//div[starts-with(@id,‘kw’)] 表示匹配任意节点下,id开头为kw的div标签
//div[contains(@id,‘kw’)] 表示匹配任意节点下,id包含kw的div标签

二、css定位高级语法

选择器 表达示例 解释
id选择器(id用 #表示) #abc 匹配id为abc的标签
class选择器(class用 .表示) .abc 匹配class为abc的标签
标签选择器 p 匹配p标签
分组选择器 a,span 匹配 a 标签和 span标签
属性选择器—指定值 [class=“li”] 匹配class为li的标签
属性选择器—不指定值 [title] 匹配属性有title的标签
属性选择器—指定标签 a[title] 匹配属性有title的a标签
属性选择器—匹配单词边界 a[title~=“hello”] 匹配title包含hello的a标签
后代选择器(空格表示),可选取当前层级下的任意层级元素 #ab p 匹配id为ab的下一/多级p标签
子元素选择器(>表示),只能选择下一级的元素 #ab>p 匹配id为ab的下一级中的p标签
相邻兄弟选择器(+表示),只能选择同级的下一个元素 #ab+.ab 匹配id为ab的同级下一元素且该元素的class为ab才能匹配到
后续兄弟选择器(~表示),选取指定元素后的所有同级指定元素 .ab~li 匹配class为ab的标签后的所有同级li标签

伪类

表达式 描述
nth-child(n) 匹配第 n 个子元素
nth-last-child(n) 匹配倒数第n个子元素
nth-of-type(n) 匹配第 n 个指定类型的标签
first-child 匹配第一个标签
last-child 匹配最后一个标签


定位元素注意事项:

  • 找到待定位元素的唯一属性
  • 如果该元素没有唯一属性,则先找到能被唯一定位到的父元素/子元素/相邻元素,再使用“>”," “,”+"等进行辅助定位
  • 不要使用随机唯一属性定位
  • 最重要的是多跟研发沟通,尽量把关键元素加上ID或者name,并减少不合理的页面元素,例如重复ID这样的事情最好不要发生。

三、css与xpath对比

1、css是配合html来工作,原理是匹配对象;而xpath是配合xml工作的,原理是遍历,故css性能更优秀
2、css语言比xpath更简洁明了
3、前段开发主要是使用css,不使用xpath,所以在技术上面,我们可以获得帮助的机会非常多

猜你喜欢

转载自blog.csdn.net/weixin_45128456/article/details/113866703
今日推荐