神奇的XPath语法(一)

上一篇文章,我们分享了关于XPath的基本认识,了解它是什么工具,用来干嘛的。

揭开XPath的层纱,它究竟是什么神器?

阿楠RPA,公众号:小楠RPA揭开XPath的层纱,它究竟是什么神器?

今天分享一些语法的简单使用!

以这张图为例:

图片

获取h2的标签:

/html/div/h2

获取p的标签:

/html/div/p

单个斜杠/ ,表示从根节点开始,需要按照节点顺序一层一层往下找,如果中间出现断层,会获取不到标签。

但是,如果要获取的标签层级比较深,一层一层这样编写会显得很麻烦...

获取h2的标签:

//h2

获取p的标签:

//p

两个斜杠// ,表示获取根节点下所有相同标签名一样的,

这样,获取具体的标签,就可以用双斜杠,不用一个节点一个节点编写了。

一、通过属性获取定位

图片

例1://a[@class="Tabs-link AppHeader-TabsLink is-active css-1fb8pjf"]

表示获取有class属性,值为Tabs-link AppHeader-TabsLink is-active css-1fb8pjf的a标签

例2://a[@class]

表示获取有class属性的所有a标签

图片

//li[@role="tab"]

表示获取有role属性,值为tab的li标签

每个标签内的所有属性,都可以通过@属性名 获取定位

二、通过函数获取定位

1、text()

图片

例1://a[text()="首页"]

表示获取标签文本内容为 首页 的a标签

例2://a[text()="知乎知学堂"]

表示获取标签文本内容为 知乎知学堂 的a标签

例3://a[text()="发现"]

表示获取标签文本内容为 发现 的a标签

通过属性获取的标签有多个,想要指定其中某一个标签

图片

(//a[@class="Tabs-link AppHeader-TabsLink css-1fb8pjf"])[1]

括号表示看成一个整体,获取第一个标签,这个索引值是从1开始的。

2、last()

如果要获取最后一个标签,使用last() 函数

图片

(//a[@class="Tabs-link AppHeader-TabsLink css-1fb8pjf"])[last()]

如果要获取倒数第二个标签,使用last()函数 - 1

图片

(//a[@class="Tabs-link AppHeader-TabsLink css-1fb8pjf"])[last() - 1]

3、position()函数

获取指定范围的标签 position()函数

图片

(//a[@class="Tabs-link AppHeader-TabsLink css-1fb8pjf"])[position() > 1]

4、contains()函数

有的属性值是不固定的,经常发生变化,只有某一段值是固定的,就可以将这一段内容作为匹配条件

图片

//a[contains(text(),"等你")]

表示模糊匹配 文本包含等你的标签

图片

contains函数第一个参数,text()也可以换成属性,比如class

//a[contains(@class,"Tabs-link AppHeader-TabsLink css-1fb8pjf")]

关于XPath一部分语法,今天就介绍就到这里了!!!

希望能帮到有需要的朋友们,提前避坑,少走弯路!

我是小楠,对RPA感兴趣的,可以联系我一起交流,一起学习!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值