文章目录

今天遇到个奇怪的问题,webdriver使用xpath定位,总是定位不到。

网页原文

想用 //ul[@id = ‘LM_SYSFD_UL’]/li/span 定位到第一个圈圈中的元素,结果总是找到第二个元素。

用chorme的控制台查找元素,发现定位到2个元素,太可爱了。

控制台输出

猜测webdriver大概是默认选择最后一个元素。既然存在这样的问题,那么就需要跟精确的办法来定位元素,我们给xpath加点料:

//ul[@id='LM_SYSFD_UL']/li[.//span[text()='收件箱']]/span

使用xpath的谓语功能,先精确定位li,然后再定位到span。

通常我们看到的xpath谓语,不是属性就是函数,其实谓语也可以是一个子节点的xpath,类似与css selector的has语法。

另外还需要说的是 .// 这个用法,它表示当前节点的子孙节点,如果用 // 那就完全变味了,表示的是根节点下的某个子孙节点。

文章目录