2015-11-07 2 views
1

Я использую следующий код pyautoit (Python + Autoit) для автоматизации установки Windows-приложений.Как перейти к следующему действию, если какое-то условие терпит неудачу в Python или Autoit?

Мое требование: сценарий должен ждать 30 секунд для появления окна. Если появится окно, оно должно вызвать исключение. Иначе он должен перейти к следующему действию.

Следующий код вызывает исключение при появлении окна. Но когда окно NOT появляется, оно не будет на следующем шаге. Его выбрасывает «AutoItError: таймаут в ожидании активации окна». Я не хочу проходить эту ошибку. Просто его следует перейти к следующему действию.

Код:

if autoit.win_wait_active("[CLASS:TESTINH]", 30) == 0: 
     raise Exception("Env is DOWN...!!!") 
    else:  
     autoit.send("{TAB}") 
     autoit.send("{ENTER}")  

Любая идея, пожалуйста?

+0

Не знакомы с AutoIt, но вы пробовали меньшее время ожидания? В примере (-ях) в документах используется время ожидания всего несколько секунд. – Nuclearman

+0

@Nuclearman Я пробовал с 1, 2, 3. 4 и 5 секунд .. Тот же вопрос .. Могу ли вы, пожалуйста, сказать мне, к какому примеру вы обращаетесь? – rcubefather

+0

Это может быть ошибка. Я бы добавил, что [проблема на их github] (https://github.com/jacexh/pyautoit/issues). В любом случае вам, вероятно, повезет больше. – Nuclearman

ответ

0

Это может помочь:

wwa = autoit.winwaitactive("[CLASS:TESTINH]", 30) 

if(wwa == 0): 
    raise Exception("Env is DOWN...!!!") 

else: 
    autoit.send("{TAB}") 
    autoit.send("{ENTER}") 
0

Вот пример того, что вы пытаетесь сделать в AutoIt. Вам нужно проверить макрос @error.

; Wait up to 30 seconds window to appear. 
WinWait("[CLASS:TESTINH]", "", 30) 

;check to see if there was a WinWait error/the window never came up 
If @error Then 
    MsgBox(0, "", "The window was NOT found!") 
Else 
    MsgBox(0, "", "The window was found.") 
;do something.... 
EndIf 

Или вы могли бы сделать это таким образом ...

;Wait up to 30 seconds window to appear. 
If WinWait("[CLASS:TESTINH]", "", 30) <> @error Then 
    ;do something.... 
EndIf 
Смежные вопросы