“欢迎勾搭心月小姐姐,了解近期开班”
今天跟大家分享下selenium中根据父子、兄弟、相邻节点定位的方法,很多人在实际应用中会遇到想定位的节点无法直接定位,需要通过附近节点来相对定位的问题,但从父节点定位子节点容易,从子节点定位父节点、定位一个节点的哥哥节点就一筹莫展了,别急,且看一步步讲解。
1. 由父节点定位子节点
最简单的肯定就是由父节点定位子节点了,我们有很多方法可以定位,下面上个例子:对以下代码:
想要根据 B节点 定位无id的子节点,代码示例如下:
结果:
第1到第3都是我们熟悉的方法,便不再多言。第4种方法用到了css选择器:,该选择器返回第n个节点,该节点为div标签;第5种方法用到了另一个css选择器: ,该选择器返回第n个div标签,注意与上一个选择器的区别;第6种方法用到了,这个是xpath默认的轴,可以忽略不写,其实质是跟方法2一样的。
当然,css中还有一些选择器是可以选择父子关系的如、等,感兴趣可以自行百度,有机会博主会讲讲css selector。
2. 由子节点定位父节点
由子节点想要定位到父节点就有点难度了,对以下代码:
我们想要由 C节点 定位其两层父节点的div,示例代码如下:
结果:
这里我们有两种办法,第1种是 的形式,就像我们知道的, 表示当前节点, 表示父节点;第2种办法跟上面一样,是xpath轴中的一个:,取当前节点的父节点。这里也是css selector的一个痛点,因为css的设计不允许有能够获取父节点的办法(至少目前没有)
3. 由弟弟节点定位哥哥节点
这是第3、第4种情况,我们这里要定位的是兄弟节点了。如以下源码:
怎么通过 D节点 定位其哥哥节点呢?看代码示例:
结果
这里列举了两种方法,一种是通过该节点的父节点来获得哥哥节点,另外一种比较优雅,是通过,其能够获取当前节点的所有同级哥哥节点,注意括号里的标号,代表着离当前节点最近的一个哥哥节点,数字越大表示离当前节点越远,当然,也可以,但是使用起来比较复杂,它获取到的是该节点之前的所有非祖先节点。
4. 由哥哥节点定位弟弟节点
源码与 一致,要想通过 D节点 定位其弟弟节点,看代码示例:
结果:
领取专属 10元无门槛券
私享最新 技术干货