1.1 Общие сведения о винклассах (winclass)

Назад Содержание Дальше

Винкласс (или просто класс) – это класс окна. В отличие от окна просто обратиться к свойствам и методам винкласса нельзя, необходимо сначала объявить окно этого винкласса.
Общий вид объявления винкласса такой

[scope] winclass wclass-id [ : derived-class] statements

где
- [scope] – необязательное указание того, как будет доступен винкласс: public – доступен везде, private – доступен только для файла, в котором он объявлен
- wclass-id – собственно имя винкласса (должно быть уникально в пределах всех модулей, подключенных с помощью ключевого слова use)
- derived-class – класс, от которого наследуется объявляемый винкласс. Наследуются все методы, свойства и объекты родительского класса
- statements – здесь идут описания собственно объектов класса, его переменных и констант

Пример: Откройте Test Application из поставки SilkTest-а и выберите меню Control – Check box. Теперь в SilkTest-е выберите пункт меню File – New – Test Frame. Из списка приложений выберите Test Application и на жмите ОК. В файл (по умолчанию Frame.inc, однако его имя и папку, где он будет храниться, можно выбрать в том же окне, где находится список запущенных приложений), как уже говорилось, SilkTest добавил описание двух окон: главного окна (window MainWin TestApplication) и окна сообщений (window MessageBoxClass MessageBox).

Хотя у нас и было открыто окно Check Box в приложении, его описание не попало в файл. Его можно добавить с помощью меню Record – Window Declaration. Сделав это, вы увидите, что добавилось описание окна xCheckBox (window DialogBox xCheckBox).

Теперь посмотрим внимательнее на объявления этих окон. Первая часть объявления – это ключевое слово window, которое указывает на то, что начинается описание окна. Далее следует указание, к какому типу (классу) принадлежит это окно (на данный момент мы имеем объявления трех видов: MainWin – главное окно, DialogBox – диалоговое окно, и MessageBoxClass – окно сообщений). Эти винклассы уже описаны в стандартных inc-файлах SilkTest-а, посмотреть их объявления можно в файле winclass.inc в папке Program Files\Segue\SilkTest.

Если раскрыть объявление этого окна (нажав на плюсик справа от объявления), то для всех окон мы увидим ключевое слово tag (тег) или multitag (мультитег). Тег – это характеристика, которая уникально идентифицирует окно, а также любой другой элемент управления. Подробнее о тегах рассказано в главе 1.2.2 Работа с тегами (tags).

У окна xCheckBox, кроме того, имеется строка “parent TestApplication”, которая указывает на то, что данное окно имеет предка и указывается имя этого предка. Данная запись позволяет обращаться к этому окну непосредственно, не записывая перед ним имя его предка, например: xCheckBox.SetActive() .

Существует также другой способ: объявить xCheckBox как винкласс, а затем внутри главного окна определить переменную этого класса.

Code

	[-] TestApp_DialogBox_CheckBox xCheckBox

Тогда обращение к этому окну будет выглядеть так: TestApplication.xCheckBox.SetActive() . В этом случае определять предка не нужно (т.е. строку “parent TestApplication” надо удалить.

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

Пример: опишем новый винкласс для диалогового окна xCheckBox и объявим окно этого типа в двух вариантах.
Первый вариант:

Code

[-] winclass TestApp_DialogBox_CheckBox : DialogBox
	[ ] tag "Check Box"
	[ ] parent TestApplication
[ ] 
[ ] window TestApp_DialogBox_CheckBox xCheckBox

Второй вариант:

Code

[-] winclass TestApp_DialogBox_CheckBox : DialogBox
	[ ] tag "Check Box"
	[ ] parent TestApplication

[-] window MainWin TestApplication
	[+] multitag "Test Application"
		[ ] "$C:\Program Files\Segue\SilkTest\testapp.exe"
	[ ] 
	[-] TestApp_DialogBox_CheckBox xCheckBox

 

Небольшое замечание по записи фреймов.
В некоторых случаях при наведении курсора мыши на необходимый объект вы можете увидеть некорректное его описание в окне Windows Declaration (например, вместо текстового поля TextField будет виден DialogBox или CustomWin). Это может случиться в том случае, если в окне существует невидимый объект, находящийся на самом верхнем уровне иерархии (так называемый Z-ordering, по окторому определяется, какой объект будет “выше” или “ниже” относительно других объектов).
Для того, чтобы узнать, как описан нужный вам объект, можно после вставки описания окна выбрать пункт меню Record – Testcase и вписать в это поле какой-нибудь текст, после чего нажать кнопку Paste to Editor и по появившемуся коду скрипта посмотреть, где именно находится объект и как он называется.


Назад Содержание Дальше