UFT One AIUtil通配符使用咨询:如何匹配前缀固定的弹窗文本选项
UFT One AIUtil通配符使用咨询:如何匹配前缀固定的弹窗文本选项
嗨,我之前在使用UFT的AIUtil处理弹窗文本时也碰到过类似的问题,刚好可以给你分享几个实用的解决办法!
方法1:使用通配符*直接匹配前缀
UFT的AIUtil.FindTextBlock其实原生支持通配符*,它可以匹配任意长度的任意字符(包括空字符)。如果你的目标文本前缀固定,比如开头都是“固定前缀”,直接这样写就可以:
AIUtil.FindTextBlock("固定前缀*").Click
这种方式简单直接,适合大多数前缀固定的场景。
方法2:用正则表达式精准匹配开头
如果通配符的匹配范围太宽泛(比如怕匹配到中间包含前缀的文本),可以试试正则表达式。AIUtil支持基于正则的文本匹配,用^符号指定文本开头,再结合.*匹配后续任意内容,代码示例:
AIUtil.FindTextBlock("^固定前缀.*").Click
这里的^确保只匹配以“固定前缀”开头的文本块,避免误匹配其他包含该前缀但不在开头的内容。
方法3:遍历所有文本块手动筛选(兜底方案)
如果上面两种方法都没生效,可能是AI识别的文本块拆分方式和你预期的不一样,这时候可以用FindAllTextBlocks获取弹窗里所有的文本块,再通过VBScript的字符串函数筛选出前缀匹配的选项:
' 获取弹窗内所有文本块 Set allTextBlocks = AIUtil.FindAllTextBlocks() ' 遍历每个文本块,检查前缀 For Each textBlock In allTextBlocks ' 假设固定前缀是"固定开头",检查文本是否以此开头 If Left(textBlock.Text, Len("固定开头")) = "固定开头" Then textBlock.Click Exit For ' 找到目标后退出循环 End If Next ' 释放对象 Set allTextBlocks = Nothing
这个方法灵活性最高,哪怕AI识别有小偏差,也能精准定位到目标选项。
另外还有几个小提醒:
- 可以先用UFT的AI Spy工具查看弹窗里实际识别到的文本内容,确认前缀的拼写、大小写、是否包含空格等细节,避免因为这些小问题导致匹配失败;
- 如果弹窗加载有延迟,记得在操作前加个
Wait或者AIUtil.WaitForObject确保元素加载完成,否则可能找不到目标文本块。
希望这些方法能帮你解决问题!
备注:内容来源于stack exchange,提问作者DMalerman
相关产品推荐
相关产品推荐

