Количество процессов с одинаковым именем

Некоторые приложения запускают несколько процессов с одинаковым именем. Например, Internet Explorer, Chrome и другие. В таких случаях иногда бывает необходимо получить общее количество процессов с одинаковым именем, чтобы знать, сколько их всего.

(more…)

Замер времени между двумя событиями

Иногда возникает необходимость замерять время между двумя действиями (например, чтобы оценить производительность приложения при выполнении каких-то действий). В этой статье мы рассмотрим несколько способов сделать это.

(more…)

Если не работает метод Drag

Иногда записанный TestComplete’ом код не воспроизводится так, как хотелось бы. Один из “проблемных” методов — метод Drag, который позволяет перетащить объект на другое место. В этом случае можно воспользоваться методами MouseDown и MouseUp объекта Sys.Desktop для создания собственной функции перетаскивания.

Так как эти методы работают с абсолютными координатами экрана, а не с объектами, нам необходимо сначала получить абсолютные координаты центра объекта, “нажать” в этой точке левую кнопку мыши, перетащить курсор на новое место и, наконец, “отпустить” кнопку мыши.

Функция может выглядеть примерно так:

function dragDrop(obj, deltaX, deltaY)
{
  var iX = obj.ScreenLeft + obj.Width/2;
  var iY = obj.ScreenTop + obj.Height/2;
  Log.Picture(obj.Picture(), "Object to be moved");
  obj = Sys.Desktop.ObjectFromPoint(iX + deltaX, iY + deltaY);
  Sys.Desktop.MouseDown(VK_LBUTTON, iX, iY);
  obj.HoverMouse(obj.Width/2, obj.Height/2);
  Sys.Desktop.MouseUp(VK_LBUTTON, iX + deltaX, iY + deltaY); 
}

 

Пример использования функции для перемещения иконок на панели инструментов Быстрый запуск:

function Test3()
{
 var w1 = Sys.Process("Explorer").Window("Shell_TrayWnd").Window("ToolbarWindow32", "Quick Launch");
 dragDrop(w1, -30, -20);
}

Улучшаем функцию typeof в JScript

Функция typeof используется для определения типа переменной. Существует 6 возможных значений, которые возвращает typeof: “number,” “string,” “boolean,” “object,” “function,” и “undefined”. Лично мне всегда не хватало возможности определять, является ли строка датой, и является ли объект массивом, поэтому в этой статье мы немного улучшим стандартную функцию typeof, чтобы иметь возможность определять эти два типа данных.

(more…)

Работа с почти Unexpected Window

В прошлой статье мы рассмотрели, как работать с Unexpected Windows (т.е. с такими окнами, которые мешают выполнению наших тестов). Однако иногда возникает необходимость отлавливать появление окон, которые никак не связаны с тестируемым приложением и не мешают работе скриптов. Например, это может быть запуск стороннего приложения, которое отслеживает работу тестируемой программы, или же системное окно.

В этой статье мы рассмотрим, как с помощью TestComplete обнаруживать подобные окна.

(more…)

Работа с Unexpected Window

В TestComplete есть такое понятие как Unexpected Window (на русский переводится примерно как Непредвиденное Окно). Unexpected Window — это такое окно, которое появляется при работе скрипта и мешает ему выполнять дальнейшие действия с тестируемым приложением. Например, модальное сообщение об ошибке, сгенерированное приложением.

В этой статье мы рассмотрим, как работать с такими окнами средствами TestComplete.

(more…)

Ненажимаемая кнопка в окне File Download (IE)

Однажды при тестировании веб-приложения с помощью TestComplete я столкнулся со странным поведением инструмента: при попытке кликнуть по кнопке Open в окне File Download TestComplete бодро рапортовал об успешном выполнении операции, однако примерно в одном случае из трёх кнопка не нажималась и окно оставалось висеть.

tcblog_ie_file_download

(more…)

Задержка выполнения скрипта: сколько осталось ждать?

Одной из полезных (и одновременно вредных) функций в TestComplete является метод aqUtils.Delay, который позволяет задержать выполнение скрипта на определенное время. Полезна эта функция потому, что иногда без неё не обойтись. Вредна потому, что часто ею пользуются везде где надо и не надо, отчего время выполнения скриптов сильно увеличивается.

В этой статье, однако, речь пойдет не о вреде и пользе, а о конкретной задаче. Предположим, мы хотим узнать, взглянув на экран, сколько нам осталось ждать до конца работы функции?

(more…)

Как починить интерфейс?

Одна из первых проблем, с которой я столкнулся при изучении TestComplete, был разломанный интерфейс. Я таскал панельки туда-сюда в окне TestComplete, пытаясь найти наиболее удобное их расположение. В результате я пришел к выводу, что настройки по умолчанию были очень даже удобными, однако вернуть всё обратно не мог, так как не помнил, где что изначально находилось.

(more…)