AutoIT Page / Window Object Model - PullRequest
       78

AutoIT Page / Window Object Model

0 голосов
/ 23 января 2019

Я хотел бы спросить, можем ли мы также получить объектную модель страницы / окна в AutoIT? Большая часть моего проекта была посвящена веб-автоматизации, и я использую Selenium Webdriver, а Framework использует объектную модель страницы. В настоящее время я назначен на проект по автоматизации GUI. Мне нравится реализовывать этот подход также в AutoIT, если это возможно, чтобы я мог повторно использовать объекты в других классах. Мы планируем использовать AutoIT отдельно. Я заметил, что большая часть примера, доступного в Интернете, была объектом, созданным для каждого класса / сценария.

Ваше мнение высоко ценится.

Спасибо!

1 Ответ

0 голосов
/ 09 февраля 2019

Общее:

Такой распространенный подход к использованию шаблона проектирования Модель объекта страницы (POM) не вполне осуществим с AutoIt.Конечно, вы можете создать структуру объекта и с AutoIt, но она не предназначена для языка.В любом случае, некоторые из целей POM могут быть достигнуты с помощью следующего примера предложения структуры теста.

Обратите внимание:

Поскольку вы не предоставляете достаточно информациио вашем тестируемом приложении (AUT) , я объясню базовую структуру.Реализация зависит от вашего приложения (SWING / RCP, WinForm и т. Д.).Также важно, какая поддержка инструмента вам нужна для распознавания объектов страницы.Помимо WinForm , который может управляться функциями ControlCommand в AutoIt, это правильный способ использовать UIASpy или au3_uiautomation в качестве вспомогательных инструментов.

Преимущество знать структуру POM в контексте с Selenium.Обычно я включаю описание тестового примера с поведенческой разработкой BDD (синтаксис Gherkin с Cucumber или SpecFlow), но здесь это не будет частью этого примера.

Структура примера:

enter image description here

Структура состоит из двух тестируемых приложений Calc и VlcPlayer .Оба следуют общей структуре PageObjects и Тесты .Вы должны попытаться разделить объекты вашей страницы (файлы) во многих подпапках, чтобы сохранить обзор.Эта подструктура должна быть аналогичной для папок / подпапок Tests .

В области Tests вы можете включить несколько этапов или категорий тестов в зависимости от целей тестирования (Acceptance)/ UI тесты, просто функциональные тесты на дым и так далее).Также рекомендуется контролировать порядок выполнения с помощью отдельного файла-оболочки TestCaseExecutionOrder.au3 .Это должно существовать для всех категорий тестов, чтобы избежать их смешивания.

Этот файл оболочки au3 содержит вызовы функций, это начало / контроль обработки.

Описание подхода:

  • TestCaseExecutionOrder.au3

    • Вызывает функции, которые являются тестовыми примерами в подпапках (Menu, PlaylistContentArea, SideNavigation).
    • Тестовый набор NiceName состоит из нескольких этапов тестирования.

      • Эти этапы тестирования должны быть включены в этот скрипт / файл следующим образом:

        #include-once ; this line is optional
        #include "Menu\OpenFolder.au3"
        
      • Шаг теста OpenFolder.au3 (который является частью тестового примера) содержит функции для загрузки папки и содержимого.

        • В этих функциях PageObject MenuItemMedia.au3 будет загружен / включен в скрипт / файл следующим образом:

          #include-once ; this line is optional
          #include "..\..\..\PageObjects\Menu\MenuItemMedia.au3" 
          
          • File MenuItemMedia.au3 должен содержать только механизм распознавания для этой области и действий.

            • Это может быть найти пункт меню Media (как функция).
            • или найти пункт меню открытой папки (как функция) и т. д.

              Func _findMenuItemMedia()
                  ; do the recognition action
                  ; ...
              
                  Return $oMenuItem
              EndFunc
              
      • На шаге теста OpenFolder.au3 , который вызывает _findMenuItemMedia(), например:

        Global $oMedia = _findMenuItemMedia()
        

        , может ли .click исполняться или что-то вроде .getText и т. Д.

В тестовых случаях должны быть только #include необходимые файлы (этапы тестирования).Шаги тестирования должны также только #include необходимые файлы (объекты страницы) и так далее.Таким образом, можно настроить функции распознавания один раз и использовать их на соответствующих этапах тестирования.

Вывод:

Конечно, это сложно объяснить таким образом, но с этим подходом вы можете сделать то же самое, что и в Selenium для веб-тестирования .Обратите внимание, что вам должным образом приходится часто использовать Global переменные.Вы должны убедиться в правильности , включая , и не потерять обзор своего теста, который намного проще в подходах, основанных на тестах ООП.

Я рекомендую использовать VS Code, потому чтовы можете переходить от файла к файлу с помощью # include .Это очень удобно.

Надеюсь, это поможет вам.

...