пятница, 31 июля 2009 г.

Synchronization in qtp

События ожидания в Quik Test Professional (QTP)


В данном посте будут расмотренны вопросы




  1. События ожидания в QTP

  2. Использование свойства Object для обращения к DOM свойствам объекта в Quick Test professional скрипте

  3. Пример programmatic Description в QTP или по русски программируемое описание в QTP

  4. Пример поиска Dom свойств объекта для использования в контексте ожидания загрузки

  5. Примеры использования методов ожидания в QTP



Как-то возник вопрос о том как оценить статус загрузки страницы браузера в QTP и ее дочерних объектов. Между прочим синхронизация очень важный момент при разработки автотестов. В будущем посте я расскажу об основных на мой взгляд правилах создания автотестов и фреймворка для набора тестов.
Первым делом пришла мысль об использование метода Sync объекта Browser.
Суть данного метода в том, что бы тест ожидал пока браузер не осуществит навигацию.
Также можно воспользоваться методом WaitProperty . Вкратце суть данного метода ожидание до того момента, когда заданное свойство объекта сравняется заданному значению свойства.
Еще можно использовать метод Exist. C данным методом все просто. Он возвращает true или false в зависимости от того существует ли заданный объект. И соответственно его удобно применять в if/else конструкциях.



Далее очень полезное свойство объектов Object, правда, к сожалению применимое только в рамках использования браузера Internet Explorer. Через данное свойство можно обращаться к различным DOM свойствам и методов указанного объекта. Приведу пример в рамках данного поста:

Есть веб приложение, в котором после полной загрузки документа border-color таблицы, в которой отображается документ, становится равным определенному цвету. Для начала я написал функцию, ожидающую полной загрузки документа на основании данного условия.



Public browdes
Set browdes = Description.Create
Browdes(“micclass”).Value=”Browser”

Function waitforload()

Set strbC=Browser(browdes).Frame(“html id:=someframe”).WebTable(“html id:=sometable”).Object. borderColor

Do Until strbC = “#00a86b”
Wait 1
Loop

End function



Но как я позже убедился в случае, если возникает ошибка БД и документ не отображается, а вместо него отображается стек трейс ошибки БД, то функция уходит в бесконечное ожидание. Т.к. в данном случае borderColor не изменяется. Также я пробовал экспериментировать со свойством Browser(browdes).Object. StatusText , но это свойство браузера менялось при каждой подгрузки картинки в документе. В итоге я решил использовать свойство фрейма в котором рисовалась таблица документа. А именно свойство readyState. И в итоге получил такую функцию.





Public browdes
Set browdes = Description.Create
Browdes(“micclass”).Value=”Browser”

Function waitforload()

Set strrS=Browser(browdes).Frame(“html id:=someframe”).Object.readyState

Do Until strrS = “complete”
Wait 1
Loop

End function




В итоге получается следующий список советов для поиска нужного свойства


  1. Прочитать про DOM свойства и методы интересуемого объекта или объектов.Например в MSDN

  2. Активно использовать Object Spy и смотреть не только Identification properties, но и Native.

  3. Определить список свойств, которые хочется использовать. И написать тестовую функцию, которая в цикле заданное количество раз обращается к данным свойствам объекта. И выводит их значения в лог например при помощи метода Print.

  4. Метод Ссылка на пример
    SyncSync in QTP
    WaitPropertyWaitProperty in QTP
    ExistExist in QTP

Комментариев нет: