如何在Autoit中处理可选窗口?

时间:2015-10-26 13:31:35

标签: windows automation automated-tests ui-automation autoit

我使用AutoIt在Windows7中自动安装软件。

在安装过程中,如果出现错误窗口,则介于两者之间。我想点击ENTER。

如果没有出现错误窗口,那么我不应该做任何事情。它应该转到下一部分。

我已经尝试过" WinActive和WinWaitActive"但它等待窗口出现。如果窗口没有出现,则不会进入下一个屏幕。

知道如何处理这种情况吗?

2 个答案:

答案 0 :(得分:0)

做一会儿循环:

while (!inputErrorage) {
  System.out.print("\tEnter your age: ");
  age = scan.nextInt();
  if((age < 0 || age > MAX_POSSIBLE_AGE)){ 
    inputErrorAge = true;
  }
}

答案 1 :(得分:0)

AdlibRegister()是正确的选择。从帮助文件中:

  

“ ...通常检查不可预见的错误。例如,您可以在脚本中使用adlib,这会导致错误窗口意外弹出。”

每100毫秒(可以调整一次),将调用此函数以检查错误对话框的出现:

Global $sErrorWindow                    = 'ErrorDialogName'
Global $iDelayHowOftenDoTheFunctionCall = 100

AdlibRegister('_isErrorWindowDisplayed', $iDelayHowOftenDoTheFunctionCall)

Func _isErrorWindowDisplayed()
    If WinActive($sErrorWindow) <> 0 Then
        WinActivate($sErrorWindow) ; just to be sure that the ENTER command is on the correct window/dialog

        ; either do
        Send('{ENTER}')
        ; or
        ControlClick('title', 'text', 'controlID')
    EndIf
EndFunc

; do your software installation processing here
; ...
; ...

; don't forget to unregister the function at the end
AdlibUnRegister('_isErrorWindowDisplayed')