当我们通过RPA工具对界面进行操作时,会遇到一些控件存在不同的情况。

例如,按钮显示中文或英文;还有的情况是一个按钮,在不同的条件下,显示的内容不同。

例如会存在 “提交”,“未提交”,“失败”等内容。而界面选取时还需要通过名字定位,

例如下面中的 aaname

<webctrl aaname  ....>

一种方式是通过构建不同的选取器来进行识别,操作。例如Pick的机制。

今天介绍另一种方式,就是UiPaht的正则表达式搜索。

使用的格式如下:

在末尾增加  matching:<tag_name>=’regex’

例如下面的例子,

<webctrl aaname='Submitted |Not Submitted |Returned ' tag='DIV' matching:aaname='regex' />

对aaname进行正则表达式的搜索,这里的控件会根据不同的条件,显示的内容可能为Submitted ,Not Submitted或Returned三种情况。

通过上述的方法,只需要一个控件就可以处理这些不同的情况。

使用这个方法,需要对正则表达式很熟悉。可以通过下面的网址,系统的进行学习。

https://www.runoob.com/regexp/regexp-tutorial.html

再举一个稍微复杂的例子。

有一个按钮, 英文状态下是“Clear All”, 中文状态是”全部清除”。

因为不同用户登录系统时的语言不同,所以这个按钮的内容会变化。

而且通过UI 选择器选取Selector 时,内容类似是 “Clear All Conent ...”等一长串的内容,而且会略有变化。所以兼容的方式就需要如下:

<webctrl aaname='.*(Clear|全部清除).*' tag='BUTTON' type='button' matching:aaname='regex' />

正则表达式中,如果想匹配不确定的字符,数字等需要用 “.*” , 只有“*”是匹配失败的。

解释如下:

特殊字符“.” 的意思是 匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用 \. 。

特殊字符“*” 的意思是 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。

所以只有.*才能满足这种模糊的匹配。

特殊字符“|” 的意思是 指明两项之间的一个选择。要匹配 |,请使用 \|。

所以,对于上述中,内容出现Clear 或者全部清除,并且前后内容变化的情况下。需要写好正则表达式,否则就会搜索失败。

UiPath UI选取器的官方文档在如下链接

正则表达式搜索

大家如有问题,欢迎提问。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐