AutoIt 等待控制元素出现

Posted

技术标签:

【中文标题】AutoIt 等待控制元素出现【英文标题】:AutoIt Wait for a Control Element to Appear 【发布时间】:2013-01-12 08:38:35 【问题描述】:

我正在尝试使用 AutoIt 自动化应用程序,并且我需要等待控件出现在应用程序中,然后才能开始自动化。此控件在应用程序启动后不久加载,但不会更改窗口标题。如何等待控件出现?

【问题讨论】:

【参考方案1】:

要在另一个 GUI 上获取控件的句柄,您需要使用 AutoIt Window Info Tool 来识别该控件。要获取控件的类名,请转到“控件”选项卡并查找“类名NN”的值。现在你可以像我在下面的例子中那样使用这个值了。

当然,您需要将"Button1" 替换为您从 AutoIt Info Tool 获得的信息,并相应地修改窗口标题。

Global $hCtrl = 0, $Waiting = True

; your GUI loop
While (1)
    If $Waiting And WinExists("Title of OtherApp.exe") Then
        $hCtrl = ControlGetHandle("Title of OtherApp.exe", "", "Button1")
        If $hCtrl Then
            ; we got the handle, so the button is there
            ; now do whatever you need to do
            GUICtrlCreateLabel("Button is there!", 10, 10)
            $Waiting = False
        EndIf
    EndIf

    $iMsg = GUIGetMsg()
    Switch $iMsg
        Case $GUI_EVENT_CLOSE
            ExitLoop
    EndSwitch
WEnd

【讨论】:

@JohnMoses 不,While (1) 是正确的,因为这只是一个 sn-p,而不是一个完整的工作解决方案。拥有自己 UI 的 AutoIt 脚本包含一个无限循环来捕获 UI 消息,这就是我想在我的脚本中展示的内容。见:autoitscript.com/autoit3/docs/guiref/GUIRef_MessageLoopMode.htm @Richard:如果您想测试一个控件当前是否显示在 GUI 上,请使用 GuiControlGetState,如 here 所示。

以上是关于AutoIt 等待控制元素出现的主要内容,如果未能解决你的问题,请参考以下文章

selenium05-等待web元素的出现

python selenium中等待元素出现及等待元素消失操作

Swift2 UI 测试 - 等待元素出现

Swift UI测试 - 等待元素出现

如何告诉排毒等待我的元素出现

在 EarlGrey 中,等待元素出现的非轮询方式是啥?