You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Microsof UFT点击WebElement子级WebButton的实现问题求助

问题解决:UFT中通过父元素定位子级data-testid元素

问题梳理

Web自动化测试场景下的核心问题:

  • 目标元素依赖data-testid做识别,但部分data-testid不唯一且无法修改
  • 需先定位父元素data-testid="Orderbeleg_Segmentumbuchung",再点击其子级data-testid="add:b"按钮,但现有UFT代码无法识别目标对象

原代码的问题点

  1. 定位表达式含无效空格:var = "data-testid:= .*" & pParent &".*"中:=后的多余空格,导致正则匹配失效
  2. ChildItem方法误用:UFT的ChildItem主要用于表格(WebTable)的子元素定位,普通WebElement下应使用ChildObjects或相对定位
  3. 冗余操作与逻辑瑕疵:先点击父元素的操作无意义,且元素存在性判断的执行顺序不合理

修正后的代码

Option Explicit

Dim bcName
bcName = "Webbuttonclick_add"
'--------------------------------------------------------------------------------------------- 

Dim pDoit, pParent, parentLocator, parentElem, childElems, i
pParent = Parameter("parent")
pDoit = CBool(evalVarAndOffset(Parameter("doit")))
' 修正定位表达式,移除多余空格,确保正则匹配准确
parentLocator = "data-testid:=.*" & pParent & ".*"

If pDoit = True Then
    Set parentElem = Browser("index:=0").Page("index:=0").WebElement(parentLocator)
    ' 等待父元素加载完成,提升稳定性
    If parentElem.Exist(5) Then
        ' 获取父元素下所有符合子元素定位条件的对象集合
        Set childElems = parentElem.ChildObjects("data-testid:=add:b")
        ' 遍历集合,找到第一个可用的子元素并执行点击
        For i = 0 To childElems.Count - 1
            If childElems(i).Exist(1) Then
                childElems(i).Click
                Wait 1
                Exit For
            End If
        Next
    End If
End If

SQS_ActionFinish

关键优化说明

  • 修正定位表达式:去掉data-testid:=后的空格,保证正则能正确匹配包含目标父元素ID的元素
  • 替换为ChildObjects方法:针对普通WebElement的子元素,ChildObjects可返回符合定位条件的所有子元素集合,适配当前场景
  • 增加等待逻辑:给父元素设置5秒等待时间,避免因页面加载延迟导致的元素识别失败
  • 遍历子元素集合:若存在多个匹配的子元素,遍历找到第一个可用元素执行点击,提升脚本稳定性

内容的提问来源于stack exchange,提问作者T.Naz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 17:12:22