先说一下轴定位的基本表达式和用法
ancestor:祖先结点 包括父结点
parent:父结点
preceding:当前元素节点标签之前的所有结点(html页面先后顺序)
preceding-sibling:当前元素节点标签之前的所有兄弟结点
following:当前元素节点标签之后的所有结点(html页面先后顺序)
following-sibling:当前元素节点标签之后的所有兄弟结点
使用方法:
/节点名称(例如preceding-sibling)::标签名
注意:使用的时候一定是单斜杠,后面是两个冒号
较多的使用场景:页面显示为一个表格样式的数据列,需要通过组合来定位元素
以上图为例,我们需要定位标题为【回电话号】的【抢投标】,仔细看一下图,除了标题不一样,其他的页面结构完全相同,普通的定位方式显示不能满足我们的需求了因此我们只能借助于通过标题来定位了
我们可以看出这2个元素的祖先是兄弟关系,因为我们可以先定位到【回电话号】,表达式://span[text()=" 回电话号"]
然后找到他的祖先,在前面那个表达式之前继续写: //span[text()=" 回电话号"]/ancestor::a
找到祖先了,由于我们需要找的元素是这个祖先的兄弟的后代,我们再找他的兄弟,继续写表达式 //span[text()=" 回电话号"]/ancestor::a/following-sibling::div
找到兄弟了,再找兄弟的后代,继续写表达式 //span[text()=" 回电话号"]/ancestor::a/following-sibling::div//a好的,我们找到了!