OpenQuality.ru

Качество программного обеспечения

Качество программного обеспечения: в главных ролях

Лента  Радар  Блог  Опыт  
Разум  Видео  Заметки  Эпизоды


Python и AutoIt: cлужили два товарища

Будучи отличным инструментом для регрессионного тестирования GUI-приложений, AutoIt (кстати, он работает в Wine) не всегда приемлем в случае разработки и тестирования сложных программных продуктов. В таких случаях можно задействовать AutoItX. Это dll-версия AutoIt, в которой реализована часть функциональности продукта. Доступ к методам и свойствам осуществляется через ActiveX/COM и dll-интерфейс.

В статье, иллюстрирующей работу с AutoIt, был рассмотрен пример создания локального пользователя. Перепишем этот код на Python (OS Windows).

import sys
import win32com.client
 
oAutoIt=win32com.client.Dispatch('AutoItX3.Control')
treeitem = "Computer Management (Local)|System Tools|Local Users and Groups"
username = "testuser"
 
try:
   oAutoIt.Run('cmd /c "compmgmt.msc"', "", oAutoIt.SW_HIDE)
 
   rc = oAutoIt.WinWaitActive("Computer Management", "", 5)
 
   if rc == 0:
      raise UserWarning, 'AutoIt Error: WinWaitActive'
 
   oAutoIt.ControlTreeView ("Computer Management", "", 12785, "Expand", treeitem, "")
 
   if oAutoIt.error == 1:
      raise UserWarning, 'AutoIt Error: TreeView - Expand'
 
   treeitem = treeitem + "|Users"
 
   oAutoIt.ControlTreeView ("Computer Management", "", 12785, "Select", treeitem, "")
 
   if oAutoIt.error == 1:
      raise UserWarning, 'AutoIt Error: TreeView - Select'
 
   oAutoIt.Send ("{AppsKey}{Down}{Enter}")
 
   rc = oAutoIt.ControlSend("New User", "", "Edit1", username)
 
   if rc == 0:
      raise UserWarning, 'AutoIt Error: EditBox - UserName'
 
   rc = oAutoIt.ControlClick("New User","", 1170)
 
   if rc == 0:
      raise UserWarning, 'AutoIt Error: "Create" Button'
 
   rc = oAutoIt.ControlClick("New User","", 2)
 
   if rc == 0:
      raise UserWarning, 'AutoIt Error: "Close" Button'
 
   oAutoIt.Sleep (2000)
 
   oAutoIt.Send ("{Tab}")
 
   rc = oAutoIt.ControlListView ("Computer Management", "", "SysListView321", "FindItem", username, "")
 
   if oAutoIt.error == 1:
      raise UserWarning, 'AutoIt Error: ListView - FindItem'
 
   oAutoIt.WinClose ("Computer Management")
 
   if rc == "-1":
      print 'Failed'
   else:
      print 'Success'
 
except UserWarning: 
      raise

Для обработки ошибок, возникающих при работе с методами AutoItX, можно написать отдельный wrapper. В целом, обращаясь к AutoItX из Python через COM, мы можем интегрировать богатые возможности Python (exceptions, OOP и т.п.) и функциональность AutoIt.

Отправить в Twitter, Facebook, ВКонтакте | Опубликовано 25.08.2008 в рубрике "Автоматизация"

Комментарии


Добавить комментарий

Пожалуйста, исправьте результат: дважды два равно



КРАТКОЕ СОДЕРЖАНИЕ

Что такое качество программного обеспечения и как его улучшить: теория и практика, задачи и решения, подводные камни и обходные пути.


ПУТЕВОДИТЕЛЬ

Проект был основан в 2008 году. За это время часть статей устарела, а некоторые из них вызывают улыбку, но пусть они останутся в том виде, в котором были написаны. Cписок всех статей с краткой аннотацией и разбивкой по рубрикам: открыть.

ПОДПИСКА

Доступ к самым интересным материалам по электропочте и RSS. Подробности.

ИЩЕЙКА