什么叫伪元素呢?伪元素代表了某个元素的子元素,虽然你在网页上可以抓到它,但却不存在文档树中,比如::before和::after是最典型的伪元素(比如定位图中“视频会员”旁边的的箭头)。和伪元素比较相近的叫伪类,伪类只是用来表示一些元素的动作状态,比如说大家常用的链接的状态(link,active,hover等)。
今天在跑自动化脚本的时候,没有id属性,class属性有,但是一个页面有好几个一样的,不唯一。然后脚本本身是通过xpath的方式去定位元素的。通过xpath的方式,是可以找到这个界面上的元素,且是唯一的。但跑脚本的时候偶尔可以点击到这个界面元素。大多数情况下点击不到。然后通过js的方式去点击,也失败了。然后通过各种搜索,终于找到了解决的方法。
这个方法就是通过css去定位这个界面的伪元素。还有其他的方法,但是需要在脚本中添加代码,所以我只简述最简洁的方法。我们定位元素的时候,一般是先找到定位元素的唯一属性,优先级是id,name,css,xpath。如果没有唯一属性,就找有唯一属性的父节点、子节点或者相邻元素节点。如果属性是随机的,那我们就不能使用该属性。然后用css定位的时候,如果是子元素,我们就用 > ,如果是相邻兄弟,我们就用 + ,如果是后续兄弟,我们就用 ~ 。