Перейти к содержимому

Фотография

Написать свой плагин для QTP


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 11

#1 vesa

vesa

    Новый участник

  • Members
  • Pip
  • 9 сообщений
  • Город:Москва

Отправлено 16 июня 2009 - 06:09

Добрый день!

Есть ли у кого-нибудь опыт написания своего плагина для QTP, для того, чтобы он мог работать с отдельными ячейками кастомных гридов?
Есть идея написать такой плагин, т.к. QTP устраивает пока всем, кроме того, что при клике на ячейки воспринимает грид как единый элемент, что нам совсем не подходит...

Какие есть требования к написанию подобных плагинов?
Возможно, есть документация на эту тему? Или кто-то уже прошел этот путь?

Помогите, пожалуйста!
  • 0

#2 ArtemRudenko

ArtemRudenko

    Постоянный участник

  • Members
  • PipPipPip
  • 248 сообщений
  • ФИО:Руденко Артем Михайлович
  • Город:Минск


Отправлено 16 июня 2009 - 12:53

Добрый день,
Есть в QTP такой aad-in как .Net, который позволит вам реализовать задуманное - причем достаточно просто.
Более подробно о том как и что делать посмотрите в следующих файлах справки:
'NETCustAPI.chm', 'NETExtensibility.chm', 'NETUsersGuide.chm', которые вы сможете обнаружить ориентировочно по следующему пути: 'С:\Program Files\Mercury Interactive\QuickTest Professional\help\'

Будут вопросы - обращайтесь.

p.s. Очень полезный сайт: http://www.advancedq...knowledge-base/
  • 0
И всё-таки она вертится...

#3 vesa

vesa

    Новый участник

  • Members
  • Pip
  • 9 сообщений
  • Город:Москва

Отправлено 16 июня 2009 - 13:22

судя по названию, этот плагин для .Net приложений?
у нас же C++ приложение (прошу прощения, что сразу забыла об этом написать...)

да и хелпов этих у нас в QTP пока нет, как и самого плагина, впрочем.... :(
  • 0

#4 ArtemRudenko

ArtemRudenko

    Постоянный участник

  • Members
  • PipPipPip
  • 248 сообщений
  • ФИО:Руденко Артем Михайлович
  • Город:Минск


Отправлено 16 июня 2009 - 15:47

судя по названию, этот плагин для .Net приложений?
у нас же C++ приложение (прошу прощения, что сразу забыла об этом написать...)

да и хелпов этих у нас в QTP пока нет, как и самого плагина, впрочем.... :(

К сожалению с таким контролом не доводилось работать.
Как вариант:
- не пробовали принудительно его задать как WinTable?
- есть ли доступ к параметру 'Object', те WinTable(...).Object Или WinObject(...).Object?
  • 0
И всё-таки она вертится...

#5 vesa

vesa

    Новый участник

  • Members
  • Pip
  • 9 сообщений
  • Город:Москва

Отправлено 17 июня 2009 - 07:10

К сожалению с таким контролом не доводилось работать.
Как вариант:
- не пробовали принудительно его задать как WinTable?
- есть ли доступ к параметру 'Object', те WinTable(...).Object Или WinObject(...).Object?


Извините, я с QTP еще очень на "вы", поэтому хотела бы уточнить:

- не пробовали принудительно его задать как WinTable?

Имеется в виду замапить наш grid на класс WinTable через Object Identification dialog?
если да, то сделать это не получилось, т.к. WinTable отсутствует в "Map To" списке доступных классов

- есть ли доступ к параметру 'Object', те WinTable(...).Object Или WinObject(...).Object?

пока не могу ответить на этот вопрос, т.к. не совсем хорошо разобралась с параметром Object и как с ним работать :(
  • 0

#6 ArtemRudenko

ArtemRudenko

    Постоянный участник

  • Members
  • PipPipPip
  • 248 сообщений
  • ФИО:Руденко Артем Михайлович
  • Город:Минск


Отправлено 17 июня 2009 - 13:48

Извините, я с QTP еще очень на "вы", поэтому хотела бы уточнить:

- не пробовали принудительно его задать как WinTable?

Имеется в виду замапить наш grid на класс WinTable через Object Identification dialog?
если да, то сделать это не получилось, т.к. WinTable отсутствует в "Map To" списке доступных классов

- есть ли доступ к параметру 'Object', те WinTable(...).Object Или WinObject(...).Object?

пока не могу ответить на этот вопрос, т.к. не совсем хорошо разобралась с параметром Object и как с ним работать :(

Принудительно - попробовать так:
- c помощью Spy находим свойство грида с названием nativeclass ну или что-нить в этом роде
- открыть Object Repository
- нажать 'define new test object'
- выбрать class=WinTable
- задать значение nativeclass(используйте значение полученное в первом шаге)

Что до второго варианта:
то это может выглядеть так:
WinTable(...).Object.Rows(0).Cells(0) - в общем надо эксперементировать, object позволяет достучаться к свойствам, те спросив к примеру ваших девелоперов или проштудировав описание класса вашей таблички - вы можете узнать,какие свойства есть и как с ними можно работать.

Всё вышесказанное работает в .net - в с++ не было возможности поэксперементировать.
  • 0
И всё-таки она вертится...

#7 vesa

vesa

    Новый участник

  • Members
  • Pip
  • 9 сообщений
  • Город:Москва

Отправлено 18 июня 2009 - 10:03

К сожалению, оба способа не помогли, либо я что-то делаю не так :(...

1. Создала новый новый объект WinTable в Object Repository. Дальше при записи скрипта QTP создает в репозитории новый объект WinObject c тем же именем, что и ранее созданный WinTable.

2. При попытке достучаться через свойство Object выдается сообщение:
Object doesn't support this property or method: 'Window(...).Window(...).WinObject(...).object'

Так что продолжаю искать решение...
Видимо, придется как-то сложнее все решать - например, через COM интерфейсы работать с ячейками гридов
  • 0

#8 ArtemRudenko

ArtemRudenko

    Постоянный участник

  • Members
  • PipPipPip
  • 248 сообщений
  • ФИО:Руденко Артем Михайлович
  • Город:Минск


Отправлено 19 июня 2009 - 06:07

К сожалению, оба способа не помогли, либо я что-то делаю не так :(...

1. Создала новый новый объект WinTable в Object Repository. Дальше при записи скрипта QTP создает в репозитории новый объект WinObject c тем же именем, что и ранее созданный WinTable.

2. При попытке достучаться через свойство Object выдается сообщение:
Object doesn't support this property or method: 'Window(...).Window(...).WinObject(...).object'

Так что продолжаю искать решение...
Видимо, придется как-то сложнее все решать - например, через COM интерфейсы работать с ячейками гридов

По второму пункту ничего не скажу, а относительно первого - когда вы объявляете принудительно в OR таблицу, то это ещё не означает, что она будет распознаваться при записи скрипта для таблицы. - http://www.geekinter...n_details/45567

После того как вы добавили в OR вам надо проверить:
- можно ли подсветить объект(кнопка highlight) - и если нет то попробовать добавить ещё пару пропертей, если и после этого ничего не будет подсвечиваться, тогда "курить" гугл относительно с++ контролов vs qtp.
- если предыдущий шаг прошёл успешно, то руками в expert mode забиваем полный путь к вашей табличке и пробуем какие-нить стандартные для WinTable методы(по хелпу), ну и опять-таки, если не удастся то в гугл.

На крайний случай - можно ещё попробовать поработать с Extern.Declare, те написать свою dll и с ее помощью ставить эксперименты.
  • 0
И всё-таки она вертится...

#9 ch_ip

ch_ip

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 19 июня 2009 - 08:43

2. При попытке достучаться через свойство Object выдается сообщение:
Object doesn't support this property or method: 'Window(...).Window(...).WinObject(...).object'

К сожалению, тестовые объекты QTP для win32-объектовов не поддерживают метод Object, который позволяет достучаться до исходного элемента ПИ
Так что в этом направлении ничего сделать нельзя.

Так что продолжаю искать решение...
Видимо, придется как-то сложнее все решать - например, через COM интерфейсы работать с ячейками гридов

Если грид реализован как ActiveX, и у него есть COM-Интерфейс, то с ним можно попробовать как с ActiveX-объектом:
- подключаете ActiveX add-in
- распознаете Ваш грид как AсtiveX-объект.
- далее через метод Object получаете собственно Ваш грид. (Как описано выше в п.2, но с той разницей, что для ActiveX-объектов поддерживается метод Object, который позволит Вам достучаться до COM-интерфейса грида).

Если приведенный способ не поможет, а грид простой, то можно просто по тексту искать нужные ячейки и работать с ними как с виртуальными объектами.
  • 0

#10 vesa

vesa

    Новый участник

  • Members
  • Pip
  • 9 сообщений
  • Город:Москва

Отправлено 19 июня 2009 - 14:02

Удалось сделать так, чтобы правильно заработал highlight для WinTable.
Но как только я попыталась использовать функции для WinTable (SelectCell, GetCellData...) QTP выругался, что действия недопустимые для объекта :((
Так что продолжаю борьбу и изыскания...

Спасибо вам большое за помощь!
  • 0

#11 janet

janet

    Новый участник

  • Members
  • Pip
  • 2 сообщений

Отправлено 11 марта 2011 - 12:04

у меня точно такая же проблема, подскажите, как ее решить.
  • 0

#12 ch_ip

ch_ip

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 11 марта 2011 - 15:29

у меня точно такая же проблема, подскажите, как ее решить.

Версия QTP И Windows?
Что из предложенного вы уже попробовали?
Каким образом вам нужно работать с таблицей? Т.е. нужно просто получить ее содержимое или таблица содержит в себе какие-то объекты, с которыми надо работать, или еще что-нибудь?
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных