这篇文章介绍selenium web driver中的css选择器(css selector),这也是我们要介绍的最后一种定位器。css大家肯定都听说过,是cascading style sheet的简称,通过各种样式让网页看起来更加美观。和xpath类似,css选择器也是根据html节点进行定位的,所以我们通过对比两者来学习css选择器。
首先,css选择器也分绝对路径和相对路径,绝对路径还是从html开始,又丑又长,所以我们还是使用相对路径。xpath中有“/”和“//”两种标识符,我们讨论时说过这两者的用法和区别,这里再复习一遍:
1. “/” - 可以出现在最开始,也可以出现在中间。最一开始的“/”是绝对路径的标志,指的是html文档本身,意思是在当前的html文档查找;中间的“/”指的是以当前节点为参照往下找第一层匹配对象,也就是只有子节点。
2. “//” - 可以出现在最开始,也可以出现在中间。最一开始的“//”是相对路径的标志,意思是在当前的html文档查找;中间的“//”指的就是以当前节点为参照往下找所有匹配对象,不受层级限制,也就是所有子孙节点。
css选择器也有这两者,只不过用“>”代替“/”,用空格代替“//”。比如我想用xpath选择下图中ul元素下的所有li:
另外两个xpath轴定位,一个是child,寻找指定子节点,换成css选择器其实就是“>”配合nth-of-type;另外一个是descendant,换成css选择器其实就是空格配合配合nth-of-type,不多说。其它的轴定位貌似用css选择器也不可用,尤其是找父节点或是祖先节点。除此之外,星号通配符也可以使用,直接替代节点标签名即可。
通过两者的比较,我个人暂时还是觉得xpath更容易理解一点。但css选择器也一样强大,两者都是定位的终极大杀器。我分享一个 css选择器api网站 ,上面列了所有css选择器的用法,我一直在研究学习,大家也可以参考一下。那我现在就演示一下用css选择器定位元素,它的格式是: