在前面的文章中,我已经介绍过多种xpath定位技巧,包括文本匹配定位法、模糊定位法、参照物定位法以及层级定位法。xpath定位的灵活性非常高,可以说多种方法都能达到定位的目的。
不同的定位方法适用于不同的场景。例如,文本匹配定位法依赖于稳定的页面文本。比如,关注按钮的文本通常是稳定的,平台不太可能将“关注”一词改为其他词语。因此,这种元素的定位可以迅速完成。
然而,有些元素的文本可能不稳定,这时文本匹配定位法就不再适用。例如,小红书评论输入框内的内容可能会发生变化,如从“说点什么...”变为“听说爱评论的人运气都不会差”。这种文案是随机的,不稳定的。
在这种情况下,我们应该如何定位呢?今天,我将为大家介绍一种非常稳定的xpath写法:位置定位法。
一、分析
通过仔细分析,我们可以发现评论输入框这个元素和右边的点赞、收藏、评论图标等四个元素都位于一个外层视图中,它们是这个视图的子元素。输入框排在第一位,点赞、收藏、评论图标依次排列在2、3、4位。
我们可以猜测,页面xml元素也是由一个外部元素包裹着下面四个子元素。
现在,让我们来看看页面结构:
与我们的猜想一致!
二、分析结论
通过分析,我们已经明确了定位思路:首先定位到外层视图元素,然后依次定位其子元素:评论输入框、点赞、收藏、评论图标等。
三、定位步骤
(一)定位外层视图
1、第一次尝试(失败)
四个子元素外层是一个android.view.ViewGroup节点,我们尝试直接定位到它。
我们发现,定位出了2个结果,定位失败!
2、第二次尝试(成功)
既然一个节点定位不到唯一节点,我们就再往上推一层,推到它的父节点。
这一次尝试,我们成功地定位到了唯一元素。
(二)获取子元素
外层元素定位到后,获取子元素就变得简单了。定位代码如下:
(三)指定获取某一个子元素
到了这一步,选择题来了:
1、获取第一个
或者
2、获取最后一个
或者
3、获取倒数第二个
或者
4、获取正数第二个
或者
位置定位法就介绍到这里。这个方法的优点是不依赖于元素本身的信息,只需要定位到外层父元素即可定位所有子元素。
换句话说,无论要定位哪一个子元素,只需要指定对应位置的数字即可。即使要定位的目标元素本身变化非常频繁,只要它的位置不变,这个xpath表达式就是稳定的。
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。