等待元素问题

恰巧路过 2022-6-14 651

TracePrint "--------------------等待元素--------------------"

// --------------------------------------------------------

// 【备注】等待元素,该Demo需使用IE打开下方的URL

//        url: http://www.vrbrothers.com/cn/wqm/demo/pages/Demo-ComplexForm.aspx

// 入参1:

//     objUiElement--目标元素

// 入参2:

//     iType--等待方式

// 入参3:

//     iTimeOut--超时时间.默认单位:毫秒.Type:Int

// 入参4:

//     optionArgs--可选参数(包括:错误继续执行/执行后延时/执行前延时).Type:Dict

// 命令原型:UiElement.Wait(objUiElement,iType,iTimeOut,optionArgs)

// --------------------------------------------------------

UiElement.Wait(@ui"表格单元<td>_用户名1","show",10000,{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":200})


这个等待方式,除了show还有哪些?怎么不列出来说明?

iTypeTrueenum"show"等待方式,可以设置为等待元素显示后结束或等待元素消失后结束


我试了一下hide,元素隐藏了(display:none;)还在等待,这个命令是我理解错了,还是存在BUG?

最新回复 (11)
  • 果子哩 2022-6-14
    2
    填了 元素? 前端解析不到?
  • 果子哩 2022-6-14
    3
    命令手册:https://documents.laiye.com/rpa-command-manual/docs/
  • 恰巧路过 2022-6-14
    4
    果子哩 填了 元素? 前端解析不到?

    这是我的代码:

    UiElement.Wait({
    "html": [
        {
            "tag": "IMG"
        }
    ],
    "wnd": [
        {
            "app": "chrome",
            "cls": "Chrome_WidgetWin_1",
            "title": "*"
        },
        {
            "cls": "Chrome_RenderWidgetHostHWND",
            "title": "Chrome Legacy Window"
        }
    ]
    },"hide",10000,{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":200})

    这是前端的页面元素:


    我刚升级了Chrome的插件,升级后有所变化,以前是点击隐藏后会超时报错,现在是

    无论我是否点击隐藏,它的执行结果都没有影响,执行结果如下:

    [2022-6-14 14:16:58] [INFO] 工作路径已切换到 D:\UiBot\creator\Projects\食品抽检3\
    [2022-6-14 14:16:58] [INFO] 流程 选中的内容 开始运行
    [2022-6-14 14:17:04] [INFO] D:\UiBot\creator\Projects\食品抽检3\选中的内容 运行已结束


  • 果子哩 2022-6-14
    5

    我这理解的意思是现在hide show参数没作用了?

    这个等待命令 是等待页面上的元素 加载 或者 消失 然后再过


  • 恰巧路过 2022-6-14
    6
    果子哩 命令手册:https://documents.laiye.com/rpa-command-manual/docs/

    这个命令手册看过了,经常翻它,经常想吐槽,说明不完整、不明确,必填参数只举出来一个。

    有返回值的也不说清楚,它会在什么情况下,返回什么,就一句将返回值赋予变量。


    我最终采用循环的方式,替代了【等待元素】,代码如下:

    //是否结束循环
    Dim showFlag = True
    //等待列表页面加载完成
    Do While showFlag
        TracePrint("正在加载")
        Dim style = UiElement.GetAttribute({
            "html": [
                {
                    "tag": "IMG"
                }
            ],
            "wnd": [
                {
                    "app": "chrome",
                    "cls": "Chrome_WidgetWin_1",
                    "title": "*"
                },
                {
                    "cls": "Chrome_RenderWidgetHostHWND",
                    "title": "Chrome Legacy Window"
                }
            ]
            },"style",{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":200})
        TracePrint(style)
        showFlag = StrComp("display: none;",style,false= False
    Loop
    TracePrint("加载完成")


  • 恰巧路过 2022-6-14
    7
    果子哩 我这理解的意思是现在hide&nbsp;show参数没作用了?这个等待命令 是等待页面上的元素 加载 或者 消失 然后再过

    消失,还是指 没有这个元素了,例如:document.getElementById("img").remove();
    还是指,这个元素隐藏了,例如:document.getElementById("img").style="display:none";

  • 果子哩 2022-6-14
    8
    嗯嗯~这边已经反馈给技术~~
  • 恰巧路过 2022-6-14
    9
    果子哩 我这理解的意思是现在hide&nbsp;show参数没作用了?这个等待命令 是等待页面上的元素 加载 或者 消失 然后再过
    我测试的结果是,show 和 hide没作用了
  • 恰巧路过 2022-6-14
    10
    你可以试一下,如果能生效,请发我一份实例代码。
  • 果子哩 2022-6-14
    11
    等待元素出现的原理是 扫html代码 元素,他用的隐藏和显示只是一个html标签的属性, 虽然界面看不到但是 html在源码里还是有的
  • 恰巧路过 2022-6-14
    12
    果子哩 等待元素出现的原理是 扫html代码 元素,他用的隐藏和显示只是一个html标签的属性, 虽然界面看不到但是 html在源码里还是有的
    你的意思是说,只要html的dom文档里面,存在目标元素,就算show,不存在就是hide。
    也就是说,【等待元素】是在“等待一定的时间,让目标元素生成出来,或者删除掉”。
    是这个意思么?
返回
发新帖