前一篇: RPA进阶:XPath基础,用XPath选择元素

01

通过xpath查找元素,将状态为完成的订单批量发货。

1、「获取相似元素列表」:通过元素值=完成,找到状态的td,再用 .. 找到父级元素一条订单。//*[text()="完成"]/..

2、循环找到的相似元素列表。

3、「获取元素对象」:通过关联之前的父元素订单和地,找到循环到的当前“确认发货”a标签,并点击。.//a[text()="确认发货"] (ps. 关系父元素时作用xpath要在最前面加上 . 表示当前元素)

4、「获取元素对象」找到再次确认按钮并点击。

02

通过查找输入框前的文本为“价格”,再在输入框中输入“¥100.00”。

1、使用xpath查找属性值等于“价格”,再用 following-sibling 查找当前节点结束标签之后的同级节点下的input,也就是输入框。 //td[text()="价格"]/following-sibling::td/input

2、在输入框中填写内容。

03

捕获所有相似元素组,除了下一页不可点击的按钮。

作用 not 进行排除属性值为disabled的元素。 //div[@class="options-pages"]/a[not(@class="disabled")]

04

通过“起”字查找价格元素。

//*[@text()="起"]/preceding-sibling::*[1]

ps. 使用prceding-sibling获取到的同级节点,是按文档顺序的反向进行排序的,它的前一个就是1而不是last()。

去除弹窗

去除弹窗的2条通用 xpath 命令:

XPath跨域

网页中内嵌网页时(淘宝生意参谋登陆页面),xpath无法捕获,需要联系父元素跨域捕获。

SVG元素

普通方式无法获取SVG元素。

  • //*[name()="svg"] 获取所有name等于svg的标签
  • //div[@class="icon"//*[name()="svg"]] 再通过div进行定位(如果页面有多个svg)

XPath和影刀

xpath可以直接提取文本属性和值,比如 //div/a[2]/text() 取出标题文字。

但影刀中这样操作就会报错。

因为影刀的指令「获取元素对象」获取的是元素对象,查询结果必须是一个元素,不能是文本或者属性值。

应该先通过「获取元素对象」获取元素,再使用「获取元素信息」提取文本或属性值。