11.7. Использование низкоуровневых процедур

Назад: 11.6 Remote Desktop, Virtual PC, VMware Содержание Дальше: 11.8 Перехват событий

По умолчанию TestComplete записывает действия, которые интуитивно понятны (например, выбор элемента из выпадающего списка, нажатие на кнопку и т.п.). Однако иногда возникает необходимость в так называемых низкоуровневых процедурах, когда действия скрипта определяются не взаимодействием с элементами управления приложения, а простыми действиями, например «зажать левую кнопку мыши, переместить указатель мыши вверх на несколько пикселей, отпустить левую кнопку мыши, нажать ее снова, перетащить указатель на несколько пикселей влево, отпустить кнопку мыши». Такие действия обычно бывают нужны в графических приложениях (например, MS Paint), где необходимопротестировать рисование различных фигур.
В TestComplete для подобных действий существует объект LLPlayer. Чтобы получить доступ к низкоуровневым процедурам, необходимо сначала добавить в проект элемент  Low Level Procedures Collection. Для этого надо щелкнуть правой кнопкой мыши на имени проекта, выберите пункт меню Add – New Item и в открывшемся диалоговом окне выберите элемент Low-Level Procedures Collection.
 
Теперь во время записи скрипта можно нажать кнопку Start Recording a Low-Level Procedure и TestComplete будет записывать низкоуровневую процедуру.
 
После того, как запись остановлена, в проекте появится записанная низкоуровневая процедура, которую можно найти в проекте в разделе LLCollection1.
 
Двойной щелчок по какой-то строке открывает диалоговое окошко для редактирования действия. Например, записанные задержки (колонка Delay) обычно не нужны и их можно установить равными нулю.
 
В следующем примере показан пример запуска записанной низкоуровневой процедуры из тестового скрипта.
function Test3()
{
  LLCollection1.LLP1.Execute();
}

Обратите внимание, что TestComplete может использовать записанные координаты относительно экрана или относительно какого-то конкретного окна (так называемые Screen Related и Window Related координаты). В данном случае мы использовали Screen Related координаты, т.е. смещение курсора мыши отсчитывается от левого верхнего угла экрана. Чтобы запустить ту же самую процедуру относительно какого-то конкретного окна, достаточно передать это окно в качестве параметра методу Execute:
function Test3()
{
  var wnd = Sys.Process(“mspaint”).Window(“MSPaintApp”, “untitled – Paint”, 1);
  LLCollection1.LLP1.Execute(wnd);
}

Если вы не записываете тестовые скрипты с помощью инструментов записи TestComplete, а пишете их вручную, вы можете использовать объект LLPlayer для выполнения низкоуровневых процедур. Иногда встречаются ситуации, когда обычные методы (Click, Drag и т.п.) по какой-то причине не работают в тестируемом приложении, тогда необходимо воспользоваться объектом LLPlayer. Другой пример использования LLPlayer – работа с несколькими окнами (например, несколько дочерних окон MDI-приложения).
Ниже показан пример нажатия на кнопку «4» в окне Калькулятора, используя методы объекта LLPlayer.
function TestLLPlayer2()
{
   var wCalc = Sys.Process(“calc”).Window(“SciCalc”, “Calculator Plus”, 1);
   wCalc.Activate();
   wCalc.HoverMouse(1, 1);
   
   var iX, iY;
   iX = wCalc.ScreenLeft;
   iY = wCalc.ScreenTop;
   LLPlayer.MouseMove(iX + 260, iY + 188, 0);
   LLPlayer.MouseDown(MK_LBUTTON, iX + 260, iY + 188, 0);
   LLPlayer.MouseUp(MK_LBUTTON, iX + 260, iY + 188, 0);
   
}

Обратите внимание, насколько усложняется при этом код скрипта – все использованные параметры являются обязательными. Однако, как уже было сказано, в некоторых случаях без этих возможностей не обойтись (например, тестирование графических приложений типа MS Paint).

Назад: 11.6 Remote Desktop, Virtual PC, VMware Содержание Дальше: 11.8 Перехват событий