Добрый день.
Важно отметить, что разработчики AutoIt не ставили целью создать среду для тестирования других приложений. В AutoIt не хватает многих возможностей, которые присутствуют в специализированных инструментах. В то же время, AutoIt отлично подходит для автоматизации рутинных операций, и зачастую его функциональность может оказаться весьма полезной. В завершение цикла заметок об AutoIt рассмотрим простой пример: как ловить неожидаемые окна при тестировании GUI-приложений.
Считываем информацию о видимых окнах (WinList) до и после выполнения критического участка кода. Если количество окон изменилось, делаем скриншот экрана (_ScreenCapture_Capture).
#include <ScreenCapture.au3> Func _isVisible($handle) If BitAnd( WinGetState($handle), 2 ) Then Return 1 Else Return 0 EndIf EndFunc Func _winNumber ($var) Local $winNumber = 0 For $i = 1 to $var[0][0] If $var[$i][0] <> "" AND _isVisible($var[$i][1]) Then $winNumber = $winNumber + 1 EndIf Next Return ($winNumber) EndFunc $winBefore = WinList() $winNumberBefore = _winNumber($winBefore) ; As if it is THE unexpected window :-) Run("notepad.exe") Sleep(2000) $winAfter = WinList() $winNumberAfter = _winNumber($winAfter) If ($winNumberAfter <> $winNumberBefore) Then _ScreenCapture_Capture(@ScriptDir & "\strange_window.jpg") EndIf
Код можно легко улучшить. К примеру, ориентироваться не на количество окон, а на их заголовки и текст.
Еще один вариант - воспользоваться функциональностью Adlib. Вот цитата из документации:
Every 250 ms (or time ms) the specified “function” is called–typically to check for unforeseen errors. For example, you could use adlib in a script which causes an error window to pop up unpredictably. The adlib function should be kept simple as it is executed often and during this time the main script is paused. Also, the time parameter should be used carefully to avoid CPU load.
В AutoIt есть немало полезных заготовок, которые можно применять в автотестах. Лучший источник информации по AutoIt: документация к продукту и форум. А нас с вами ждут другие инструменты. До встречи.
Что такое качество программного обеспечения и как его улучшить: теория и практика, задачи и решения, подводные камни и обходные пути.
Автор комментария : Artour Bakiev | December 8, 2008
Было интересно читать всю серию заметок про AutoIt.
Между прочим, автор заинтриговал фразой “разработчики AutoIt не ставили целью создать среду для тестирования других приложений”. А в чём состояла цель разработчиков AutoIt?
[Ответить]
Автор комментария : Капитан Аляска | December 8, 2008
Артур, спасибо за комментарий. Отвечу цитатой:
AutoIt v3 is a freeware BASIC-like scripting language designed for automating the Windows GUI and general scripting… AutoIt was initially designed for PC “roll out” situations to reliably automate and configure thousands of PCs. Over time it has become a powerful language that supports complex expressions, user functions, loops and everything else that veteran scripters would expect.
То есть, о тестировщиках Jonathan Bennett вряд ли думал напрямую (кстати, Jon довольно отзывчив: очень мешавший мне bug в AutoItX он по запросу пофиксил в ближайшем релизе). Приятный момент состоит в том, что результат его труда можно с успехом применять в тестировании :)
[Ответить]
Автор комментария : NAWHI | April 23, 2009
Давно уже использую AutoIt для автоматизации бенчмаркинга. Классная штука. Один момент досадует: во всём многообразии её функционала, я так и не нашёл функции, которая позволяла бы выяснить загрузку процессора. А так было бы здорово…
[Ответить]
Автор комментария : Капитан Аляска | April 23, 2009
NAWHI, спасибо за комментарий.
Наверное, я бы задействовал Performance Counters. Считывал бы значение нужного каунтера какой-нибудь внешней утилитой (скажем, скриптом на javascript или powershell) и обрабатывал результат в AutoIt.
На форуме можно поискать, как энтузиасты AutoIt решали подобные задачи. Вот, к примеру:
http://www.autoitscript.com/forum/index.php?showtopic=87260&hl=CPU%20benchmark&st=0
Или вот:
http://www.autoitscript.com/forum/index.php?showtopic=90736&hl=cpu+counter
[Ответить]
Автор комментария : sova | January 27, 2012
Какие отличия или преимущества у Autoit и AutoHotkey?
[Ответить]
Автор комментария : Капитан | January 29, 2012
Sova, у AutoIt функциональность побогаче и множество расширений.
[Ответить]