TbtkScriptTesterObject `````````````````````````````````````````````````````````````````````` .. pas:class:: TbtkScriptTesterObject Класс, реализующий методы работы с тестируемым приложением Global. .. pas:attribute:: RecordingOperationName: String Имя операции, куда будут отправляться новые сгенерированные строки скрипта и результаты выполнения операций, отправленных методом :pas:class:`TbtkScriptTesterObject.AddRecorderManualOperation`. :rtype: String Входные параметры: #. Текст новой строки скрипта или результат выполнения операции. #. Имя операции чей результат вернулся. Если вызов был произведён не в результате выполнения операции, а как результат непосредственной записи пользовательских действий- пустая строка. .. warning:: |not_implemented| .. pas:attribute:: DefualtRaiseOnTimeout: Boolean Задаёт значение подставляемое по-умолчанию в дефолтный параметр **RaiseOnTimeout** ф-й поддерживающих обработку ошибок сервера :rtype: Boolean .. warning:: |not_implemented| .. pas:attribute:: DefaultDoRaise: Boolean Задаёт значение подставляемое по-умолчанию в дефолтный параметр **DoRaise** ф-й поддерживающих обработку ошибок сервера :rtype: Boolean .. warning:: |not_implemented| .. pas:attribute:: DefaultWaitExecTimeout: Integer Задаёт значение подставляемое по-умолчанию в дефолтный параметр **Timeout** ф-й поддерживающих обработку ошибок сервера :rtype: Integer .. warning:: |not_implemented| .. pas:attribute:: RaiseOperationName: String Задаёт системное имя Pascal-операции обрабатывающей невыброшенные скриптовыми методами исключительные ситуации. В операцию первым параметром поступает текст исключительной ситуации, для того, чтобы можно было, например, сохранить его в лог выполнения скрипта. Операция должна принадлежать той же выборке что исполняет скрипт. :rtype: String .. warning:: |not_implemented| .. pas:attribute:: ScriptRecording: Boolean Свойство указывает, что тестируемое приложение работает в режиме записи тестового скрипта. :rtype: Boolean .. warning:: |not_implemented| .. pas:attribute:: Runned: Boolean Свойство указывает, запущено ли тестируемое приложение. Атрибут только для чтения :rtype: Boolean .. warning:: |not_implemented| .. pas:method:: AddRecorderManualOperation(SysName, Caption: String; ImageIndex: Integer; ScriptText: String) Добавляет операцию ручного управления записью скрипта :param String SysName: Системное имя операции, которое ей будет присвоено. :param String Caption: поле DisplayLabel операции. :param Integer ImageIndex: Номер пиктограммы в основном ImageList'е приложения. :param String ScriptText: Текст Pascal-операции. .. note:: - Метод должен вызываться в то время когда тестируемое приложение находится в режиме записи скрипта, т.е. после выполнения метода :pas:class:`TbtkScriptTesterObject.EnableScriptRecording`. - После завершения записи (:pas:class:`TbtkScriptTesterObject.DisableScriptRecording`) все операции удаляются как и сам объект ручного управления записью скрипта. .. warning:: |not_implemented| .. pas:method:: CloseActiveModalWindow(ModalResult: TModalResult; Timeout: Integer; DoRaise, RaiseOnTimeout: Boolean) Закрывает модальное окно :param TModalResult ModalResult: Результат модального выполнения. :param Integer Timeout: Временной интервал ожидания. :param Boolean DoRaise: Возбуждать исключение при ошибке во время выполнения метода. :param Boolean RaiseOnTimeout: Возбуждать исключение при превышении таймаута ожидания. .. note:: - CommandType = tcUnknown - Находит верхнее окно (GetForegroundWindow) в целом, и, если оно принадлежит Серверному приложению - присваивает ему результат модального выполнения, что опосредованно должно привести к его закрытию. .. warning:: |not_implemented| .. pas:method:: CloseActiveWindow(Timeout: Integer; DoRaise, RaiseOnTimeout: Boolean) Метод закрывает окно :param Integer Timeout: Временной интервал ожидания :param Boolean DoRaise: Возбуждать исключение при ошибке во время выполнения метода. :param Boolean RaiseOnTimeout: Возбуждать исключение при превышении таймаута ожидания. .. note:: - CommandType = tcUnknown - Находит верхнее окно, проверяет на принадлежность к Серверу (ищет хендл среди компонентов) и посылает ему сообщение PostMessage WM_Quit. .. warning:: |not_implemented| .. pas:method:: RunAsCurrent(CmdLine: String) Метод запускает экземпляр тестируемого приложения, используя имя пользователя и пароль текущего пользователя. В качестве параметра может быть передано системное имя главной выборки приложения. :param String CmdLine: Параметры командной строки .. warning:: |not_implemented| .. pas:method:: WaitDialogA(DialogCaption: String; TimeOut: Integer) Метод ожидает отображения диалога в тестируемом приложении. Если диалог не будет отображён в течении указанного интервала времени, будет сгенерирована ошибка. :param String DialogCaption: Заголовок окна диалога. :param Integer TimeOut: Временной интервал ожидания отображения диалога или сообщения в тестируемом приложении. (в миллисекундах). .. note:: то же самое, что и ``WaitWindow``, но ClassName фиксирован - "TbtkMessageForm". .. code-block:: delphi :caption: Пример использования TestApp.WaitDialog('Текст заголовка', 1000); // Вызов идентичен вызову: TestApp.WaitWindow('TbtkMessageForm', 'Текст заголовка', 1000); .. warning:: |not_implemented| .. pas:method:: InputText(Text: String) Метод эмулирует клавиатурный ввод текста в текущий контрол. :param String Text: Текст, который будет введён в текущий контрол .. code-block:: delphi :caption: Пример использования TestApp.Run(''); // Запуск приложения TestApp.WaitWindow('TbtkConnectForm', 'Соединение', 10000); // Ожидание формы ввода пароля Sleep(1000); TestApp.InputText('password'); // Ввод пароля Sleep(1000); TestApp.KeyPress(9); // Переход по клавише Tab на поле выбора базы Sleep(1000); TestApp.KeyPress(9); //Переход по клавише Tab на кнопку OK TestApp.KeyPress(13); // Нажатие Enter, для закрытия диалога .. warning:: |not_implemented| .. pas:method:: ExecuteOperation(SelectionName, Representation, OperationName: String; Timeout: Integer; DoRaise, RaiseOnTimeout: Boolean) Метод выподняет операцию, принадлежащую выборке с указанным именем и отображением. Выполнение операции производится асинхронно. :param String SelectionName: Системное имя выборки :param String Representation: Отображение выборки :param String OperationName: Имя операции :param Integer Timeout: Интервал ожидания. :param Boolean DoRaise: Возбуждать исключение при ошибке во время выполнения метода. :param Boolean RaiseOnTimeout: Возбуждать исключение при превышении таймаута ожидания. .. note:: ``CommandType = tcExecuteOperation`` .. code-block:: delphi :caption: Пример использования // Запуск приложения TestApp.Run('username/password@DBName#btk'); // Ожидание окна выбора приложения TestApp.WaitSelection('SEL_BTK_APPLICATIONS', 'LIST', 15000); Sleep(1000); // Позиционирование в списке приложений на Конфигуратор TestApp.SelectionLocate('SEL_BTK_APPLICATIONS', 'LIST', 'sSystemName', 'SEL_ConfiguratorMainMenu'); Sleep(1000); // Выбор приложения, нажатием операции CloseFormOk TestApp.ExecuteOperation('SEL_BTK_APPLICATIONS', 'LIST', 'CloseFormOk'); // Ожидание клавной выборки приложения TestApp.WaitSelection('SEL_CONFIGURATORMAINMENU', '', 10000); Sleep(1000); TestApp.Quit; .. warning:: |not_implemented| .. pas:method:: Quit() Метод завершает работу, запущенного ранее экземпляра тестируемого приложения. Если в тестируемом приложении открыты какие-либо окна будет задан вопрос о подтверждении закрытия. .. code-block:: delphi :caption: Пример использования // Запуск приложения TestApp.Run('username/password@DBName#btk'); // Ожидание окна выбора приложения TestApp.WaitSelection('SEL_BTK_APPLICATIONS', 'LIST', 15000); Sleep(1000); // Позиционирование в списке приложений на Конфигуратор TestApp.SelectionLocate('SEL_BTK_APPLICATIONS', 'LIST', 'sSystemName', 'SEL_ConfiguratorMainMenu'); Sleep(1000); // Выбор приложения, нажатием операции CloseFormOk TestApp.ExecuteOperation('SEL_BTK_APPLICATIONS', 'LIST', 'CloseFormOk'); // Ожидание клавной выборки приложения TestApp.WaitSelection('SEL_CONFIGURATORMAINMENU', '', 10000); Sleep(1000); TestApp.Quit; .. warning:: |not_implemented| .. pas:method:: IsSelectionActive(SelectionName, Representation: String; Timeout: Integer; DoRise, RaiseOnTimeout: Boolean): Integer Метод проверяет существование и активность выборки с указанным именем и отображением на текущей форме тестируемого приложения. Возможные результаты, возвращаемые методом: 1 Выборка существует и активна \-1 Выбока не найдена \-2 Выборка не активна :param String SelectionName: Имя выборки :param String Representation: Отображение :param Integer Timeout: Интервал ожидания. :param Boolean DoRaise: Возбуждать исключение при ошибке во время выполнения метода. :param Boolean RaiseOnTimeout: Возбуждать исключение при превышении таймаута ожидания. :rtype: Integer .. warning:: |not_implemented| .. pas:method:: ExecuteOperationEx(SelectionName, Representation, OperationName: String; ParamNames, ParamValues: Array; Timeout: Integer; DoRaise, RaiseOnTimeout: Boolean) Метод выполняет операцию, принадлежащую выборке с указанным именем и отображением. В метод возможно передать параметры, управляющие режимом выполнения операции. Указание параметров может быть необходимо при вызове сеттеров, в которых производится анализ свойств ``SetterExecType``, ``GetEditButtonName`` и ``UserActionType``. +--------------------------------------+--------------------------------------+ | Имя параметра | Возможные значения | +======================================+======================================+ | 'SetterExecType' | etUnknown | | | | | | etEditBtn (по-умолчанию) | | | | | | etClearBtn | | | | | | etManual | | | | | | etSetVar | | | | | | etExecOp | | | | | | etBulkUpdate | +--------------------------------------+--------------------------------------+ | 'ButtonName' | 'LOOKUP#' - кнопка выбора значения | | | (по умолчанию) | | | | | | 'OPENCARD#' - кнопка открытия | | | карточки | +--------------------------------------+--------------------------------------+ | 'UserAction' | uaUnknown (по-умолчанию) | | | | | | uaNextControl | +--------------------------------------+--------------------------------------+ Выполнение операции производится асинхронно. :param String SelectionName: Имя выборки :param String Representation: Отображение :param String OperationName: Имя операции :param Array ParamNames: Массив параметров :param Array ParamValues: Массив значений параметров :param Integer Timeout: Интервал ожидания. :param Boolean DoRaise: Возбуждать исключение при ошибке во время выполнения метода. :param Boolean RaiseOnTimeout: Возбуждать исключение при превышении таймаута ожидания. .. warning:: |not_implemented| .. pas:method:: CloseActiveForm(Timeout: Integer; DoRaise, RaiseOnTimeout: Boolean) Метод закрывает текущую активную форму тестового приложения. Определение активной формы приложения производится в следующем порядке: #. Диалог (форма диалога должна быть активной) #. Модальная форма #. MDI форма #. Главное окно приложения :param Integer Timeout: Интервал ожидания. :param Boolean DoRaise: Возбуждать исключение при ошибке во время выполнения метода. :param Boolean RaiseOnTimeout: Возбуждать исключение при превышении таймаута ожидания. .. note:: - CommandType = tcCloseActiveForm - Просто закрывает активную форму серверного приложения, аналогично **CloseActiveModalForm** (*mrCancel*), но асинхронно: на CloseQuery может быть повешен модальный вызов - он не должен остановить выполнение скрипта. .. warning:: |not_implemented| .. pas:method:: DisableScriptRecording() Метод выключает в тестируемом приложении режим записи тестового скрипта. .. warning:: |not_implemented| .. pas:method:: EnableScriptRecording() Метод включает в тестируемом приложении режим записи тестового скрипта. Метод должен вызываться из выборки, редактором которой является **TbtkLookUpScriptEditFrame** или **TbtkScriptEditFrame**. Допустимо, если редактор скрипта будет являться детальным фреймом к фрейму текущей выборки. Это условие необходимо из-за того, что регистратором скрипта является "фрейм - редактор скриптов", Handle которого передаётся тестируемому приложению. .. warning:: |not_implemented| .. pas:method:: FocusOnFieldByName(SelectionName, Representation, FieldName: String; Timeout: Integer; DoRise, RaiseOnTimeout: Boolean) Метод перемещает фокус ввода на контрол, являющийся редактором для указанного атрибута выборки. Для карточки, это будет редактор, для списка или дерева, колонка соответствующая указанному атрибуту. :param String SelectionName: Системное имя выборки :param String Representation: Отображение :param String FieldName: Имя атрибута :param Integer Timeout: Интервал ожидания. :param Boolean DoRaise: Возбуждать исключение при ошибке во время выполнения метода. :param Boolean RaiseOnTimeout: Возбуждать исключение при превышении таймаута ожидания. .. warning:: |not_implemented| .. pas:method:: FocusOnFirstControl(Timeout: Integer; DoRaise, RaiseOnTimeout: Boolean) Установить фокус на первый контрол активной формы. :param Integer Timeout: Интервал ожидания. :param Boolean DoRaise: Возбуждать исключение при ошибке во время выполнения метода. :param Boolean RaiseOnTimeout: Возбуждать исключение при превышении таймаута ожидания. .. warning:: |not_implemented| .. pas:method:: KeyPressA(Key: Integer; ShiftState: Array) Метод эмулирует нажатие комбинации клавиш. :param Integer Key: Код клавиши, нажатие которой должно быть эмулировано. :param Array ShiftState: Массив определяет, какие функциональные клавиши (Alt, Ctrl, Shift) были нажаты в дополнении к основной клавише. Допустимые значения элементов массива: - ssAlt - ssCtrl - ssShift .. code-block:: delphi :caption: Пример использования TestApp.KeyPressA(ord('D'), [ssAlt, ssCtrl, ssShift]); .. warning:: |not_implemented| .. pas:method:: KeyPress(Key: Integer) Метод эмулирует нажатие клавиши с указанным кодом. :param Integer Key: Код клавиши, нажатие которой должно быть эмулировано. .. code-block:: delphi :caption: Пример использования TestApp.Run(''); // Запуск приложения TestApp.WaitWindow('TbtkConnectForm', 'Соединение', 10000); // Ожидание формы ввода пароля Sleep(1000); TestApp.InputText('password'); // Ввод пароля Sleep(1000); TestApp.KeyPress(9); // Переход по клавише Tab на поле выбора базы Sleep(1000); TestApp.KeyPress(9); //Переход по клавише Tab на кнопку OK TestApp.KeyPress(13); // Нажатие Enter, для закрытия диалога .. warning:: |not_implemented| .. pas:method:: SelectionGetVar(SelectionName, Representation, VarName: String; Timeout: Integer; DoRaise, RaiseOnTimeout: Boolean): Variant Метод возвращает значение атрибута (параметра) указанной выборки. :param String SelectionName: Системное имя выборки :param String Representation: Отображение выборки :param String VarName: Имя параметра :param Integer Timeout: Интервал ожидания. :param Boolean DoRaise: Возбуждать исключение при ошибке во время выполнения метода. :param Boolean RaiseOnTimeout: Возбуждать исключение при превышении таймаута ожидания. :rtype: Variant .. warning:: |not_implemented| .. pas:method:: SelectionSetVar(SelectionName, Representation, VarName: String; Value: Variant; Timeout: Integer; DoRaise, RaiseOnTimeout: Boolean) Метод устанавливает значение параметру в указанной выборке. :param String SelectionName: Системное имя выборки :param String Representation: Отображение выборки :param String VarName: Имя параметра :param Variant Value: Значение параметра :param Integer Timeout: Интервал ожидания. :param Boolean DoRaise: Возбуждать исключение при ошибке во время выполнения метода. :param Boolean RaiseOnTimeout: Возбуждать исключение при превышении таймаута ожидания. .. note:: - CommandType = tcSetVar - Если серверный сеттер решит вернуть сообщение об ошибке - оно уже не попадёт в результат выполнения этого метода, т.к. SQL-Операция выполняется асинхронно - исключение будет выбрано из очереди следующим поддерживающим обработку ошибок сервера методом за этим. .. warning:: |not_implemented| .. pas:method:: WaitSelection(SelectionName, Representation: String; TimeOut: Integer) Метод ожидает создания и открытия выборки с указанным именем. Если выборка не будет создана и открыта в течении указанного интервала времени, будет сгенерирована ошибка. :param String SelectionName: Имя выборки. :param String Representation: Отображение выборки. :param Integer TimeOut: Временной интервал ожидания отображения диалога или сообщения в тестируемом приложении. (в миллисекундах). .. note:: Это не метод интерфейса, он реализован непосредственно на уровне объекта TestApp. Выполняет в цикле проверку :pas:class:`TbtkScriptTesterObject.IsSelectionActive` с задержкой в 100 миллисекунд, если за время работы ф-и выборка с такими характеристиками так и не появилась - будет выброшена исключительная ситуация "Ожидание выборки прекращено по таймауту". После каждого вызова IsSelectionActive так же выполняется проверка на наличие ошибок в очереди сервера. .. code-block:: delphi :caption: Пример использования // Запуск приложения TestApp.Run('username/password@DBName#btk'); // Ожидание окна выбора приложения TestApp.WaitSelection('SEL_BTK_APPLICATIONS', 'LIST', 15000); Sleep(1000); // Позиционирование в списке приложений на Конфигуратор TestApp.SelectionLocate('SEL_BTK_APPLICATIONS', 'LIST', 'sSystemName', 'SEL_ConfiguratorMainMenu'); Sleep(1000); // Выбор приложения, нажатием операции CloseFormOk TestApp.ExecuteOperation('SEL_BTK_APPLICATIONS', 'LIST', 'CloseFormOk'); // Ожидание клавной выборки приложения TestApp.WaitSelection('SEL_CONFIGURATORMAINMENU', '', 10000); Sleep(1000); TestApp.Quit; .. warning:: |not_implemented| .. pas:method:: CloseActiveModalForm(ModalResult: TModalResult; Timeout: Integer; DoRaise, RaiseOnTimeout: Boolean) Метод закрывает текущую активную модальную форму тестового приложения установкой форме соответствующего значения *ModalResult*. Определение активной модальной формы приложения производится в следующем порядке: #. Диалог (форма диалога должна быть активной) #. Модальная форма Не модальные формы метод не закрывает. :param TModalResult ModalResult: Значение, которое будет присвоено свойству ModalResult формы. :param Integer Timeout: Интервал ожидания. :param Boolean DoRaise: Возбуждать исключение при ошибке во время выполнения метода. :param Boolean RaiseOnTimeout: Возбуждать исключение при превышении таймаута ожидания. .. warning:: |not_implemented| .. pas:method:: WaitDialog(TimeOut: Integer) Метод ожидает отображения диалога в тестируемом приложении. Если диалог не будет отображён в течении указанного интервала времени, будет сгенерирована ошибка. :param Integer TimeOut: Временной интервал ожидания отображения диалога или сообщения в тестируемом приложении (в миллисекундах). .. note:: - CommandType = tcUnknown - Работает как ``WaitSelection``, проверяет верхнее окно Серверного приложения на ``ClassName = 'TbtkMessageForm'`` и состояние ``fsModal in FormState`` .. code-block:: delphi :caption: Пример использования TestApp.WaitDialog(1000); // Вызов идентичен вызову: TestApp.WaitWindow('TbtkMessageForm', '', 1000); .. warning:: |not_implemented| .. pas:method:: WaitWindow(WindowClass, WindowCaption: String; TimeOut: Integer) Метод ожидает отображения в тестируемом приложении окна указанного класса и с указанным текстом в заголовке. Если окно не будет отображено в течении указанного интервала времени, будет сгенерирована ошибка. :param String WindowClass: Класс окна Windows. :param String WindowCaption: Заголовок окна. :param Integer TimeOut: Временной интервал ожидания отображения диалога или сообщения в тестируемом приложении. (в миллисекундах). .. code-block:: delphi :caption: Пример иллюстрирует запуск тестируемого приложения и ввод в диалог соединения имени пользователя // Паузы в выполнении скрипта (Sleep) оставлены для большей наглядности. TestApp.Run(''); // Запуск приложения TestApp.WaitWindow('TbtkConnectForm', 'Соединение', 10000); // Ожидание формы ввода пароля Sleep(1000); TestApp.InputText('password'); // Ввод пароля Sleep(1000); TestApp.KeyPress(9); // Переход по клавише Tab на поле выбора базы Sleep(1000); TestApp.KeyPress(9); //Переход по клавише Tab на кнопку OK TestApp.KeyPress(13); // Нажатие Enter, для закрытия диалога .. warning:: |not_implemented| .. pas:method:: Terminate() Метод аварийно завершает работу тестируемого приложения. Тестируемое приложение завершает свою работу без запросов закрытия активных форм. .. warning:: |not_implemented| .. pas:method:: Run(CmdLine: String; InitSyncronize: Boolean) Метод запускает экземпляр тестируемого приложения. :param String CmdLine: Параметры командной строки. :param Boolean InitSyncronize: Синхронизировать выполнение операций. True При выполнении операций будет выполнен забор сообщений (на данный момент: результаты выполнения команд и недетерминированные ошибки сервера) от OLE-сервера тестирования. При наличии сообщения или timeout'а будет возбуждено исключение. .. code-block:: delphi :caption: Пример использования // Запуск приложения TestApp.Run('username/password@DBName#btk'); // Ожидание окна выбора приложения TestApp.WaitSelection('SEL_BTK_APPLICATIONS', 'LIST', 15000); Sleep(1000); // Позиционирование в списке приложений на Конфигуратор TestApp.SelectionLocate('SEL_BTK_APPLICATIONS', 'LIST', 'sSystemName', 'SEL_ConfiguratorMainMenu'); Sleep(1000); // Выбор приложения, нажатием операции CloseFormOk TestApp.ExecuteOperation('SEL_BTK_APPLICATIONS', 'LIST', 'CloseFormOk'); // Ожидание клавной выборки приложения TestApp.WaitSelection('SEL_CONFIGURATORMAINMENU', '', 10000); Sleep(1000); TestApp.Quit; .. code-block:: delphi :caption: Возможные варианты использования метода // Отобразится диалог ввода пользовател и пароля TestApp.Run(''); // Если имя пользователя и пароль указаны верно, отобразится диалог выбора приложения TestApp.Run('username/password@DBName#btk'); // Запустится указанное приложение TestApp.Run('username/password@DBName#btk SEL_ConfiguratorMainMenu'); .. warning:: |not_implemented| .. pas:method:: SelectionLocate(SelectionName, Representation, FieldName: String; FieldValue: Variant; Timeout: Integer; DoRaise, RaiseOnTimeout: Boolean): Integer Метод выполняет позиционирование на запись в указанной выборке по ключевому полю. Возможные результаты, возвращаемые методом: 1 Позиционирование произведено успешно \-1 Выбока не найдена \-2 Выборка не активна \-4 Запись не найдена :param String SelectionName: Имя выборки. :param String Representation: Отображение выборки. :param String FieldName: Имя поля. :param Variant FieldValue: Значение поля. :param Integer Timeout: Интервал ожидания. :param Boolean DoRaise: Возбуждать исключение при ошибке во время выполнения метода. :param Boolean RaiseOnTimeout: Возбуждать исключение при превышении таймаута ожидания. :rtype: Integer .. code-block:: delphi :caption: Пример использования // Запуск приложения TestApp.Run('username/password@DBName#btk'); // Ожидание окна выбора приложения TestApp.WaitSelection('SEL_BTK_APPLICATIONS', 'LIST', 15000); Sleep(1000); // Позиционирование в списке приложений на Конфигуратор TestApp.SelectionLocate('SEL_BTK_APPLICATIONS', 'LIST', 'sSystemName', 'SEL\_ConfiguratorMainMenu'); Sleep(1000); // Выбор приложения, нажатием операции CloseFormOk TestApp.ExecuteOperation('SEL_BTK_APPLICATIONS', 'LIST', 'CloseFormOk'); // Ожидание клавной выборки приложения TestApp.WaitSelection('SEL_CONFIGURATORMAINMENU', '', 10000); Sleep(1000); TestApp.Quit; .. warning:: |not_implemented|