前提:在RPA产品中,掌握元素捕获的技能很重要,不仅需要学完课程,还得积累经验。加上元素捕获本身是复杂且多变的,网页结构一旦变化,捕获的元素就会失效,还有的元素按照普通的捕获方法,直接捕获不到。这时候,我们不得不考虑更高级的捕获元素的方式。那么XPath无疑是最好的解决方案。
问题来了,零基础,看不懂Html?搞不清楚XPath复杂的语法结构,怎么办?
先不要慌,影刀官方给咱们准备专门的课程,建议先看完高级课程的【第一课 从头开始的HTML之旅】【第四课 XPath-定位元素的终极秘诀?】,咱们再进行实战。


XPath基本语法和定义,也可以参考菜鸟Xpath教程系统学习下
网址:https://www.runoob.com/xpath/xpath-tutorial.html
以下是我学习课程之后,我认为比较值得动手尝试下的部分笔记
思路:
(1)捕获相似元素:两个下拉框和对应的标题的祖先元素“下拉框和对应的标题_指定”,把全局变量”指定下拉框标题” 传入到元素的属性innerText中
(2)捕获下拉框相似元素组
(3)获取关联父元素”下拉框和对应的标题_指定”的下拉框元素”指定下拉框”
(4)对下拉框进行操作
拆解步骤:
1. 找到一个祖先元素,这个祖先元素的XPath路径是://div[@class='ant-row ant-form-item’]。
2. 祖先元素带有label文本标签为”活跃用户“,[*//label='活跃用户']
3.在找到的这个祖先元素中,继续查找后代元素中的div元素,且这个div元素具有role属性为"combobox"。这个后代div元素的XPath路径是://div[@role='combobox']。
综合起来,这个XPath表达式的作用是先找到一个特定条件的祖先元素,然后在这个祖先元素中查找符合另一个条件的后代元素。
备注:在XPath中,祖先元素指的是当前元素的所有父级元素,以及这些父级元素的父级元素,依此类推,直到文档根节点。

实操案例:
1、获取label名称为“下拉框”的对象
XPath表达式
//div[@class='ant-row'][3]/div[@class='ant-col ant-col-12'][*//label='下拉框']//span[@class="ant-form-item-children"]/select
2.获取下拉框,文本为“香蕉”的选项
根据位置
//div[@class="ant-form-item-control"]//select//option[3]
根据文本
//div[@class="ant-form-item-control"]//select//option[text()="苹果"]
完整流程:
暂缺
3.如何用XPath定位网页弹窗实战
//*[contains(@class,"close")]//ancestor::div[not(contains(@placeholder,"请输入"))]/*[contains(@class,"close")]

//*[contains(@data-testid,"close")]/ancestor::div[not(contains(@placeholder,"请输入"))]/*[contains(@data-testid,"close")]
自己尝试的小案例:
//*[contains(@data-testid,"beast-core-modal-icon-close")]
手机XPath教程:https://www.bilibili.com/video/BV1ZV4y1v7z1/?p=3&vd_source=ec9af2c01d92fd325b92f67f94527cc5
以下是XPath中常用的一些轴:
以下是一些XPath轴的用法示例:
假设我们有以下简单的XML文档结构:
现在我们来举例说明如何使用XPath中的轴来选择不同类型的节点: