Написать свой плагин для QTP
#1
Отправлено 16 июня 2009 - 06:09
Есть ли у кого-нибудь опыт написания своего плагина для QTP, для того, чтобы он мог работать с отдельными ячейками кастомных гридов?
Есть идея написать такой плагин, т.к. QTP устраивает пока всем, кроме того, что при клике на ячейки воспринимает грид как единый элемент, что нам совсем не подходит...
Какие есть требования к написанию подобных плагинов?
Возможно, есть документация на эту тему? Или кто-то уже прошел этот путь?
Помогите, пожалуйста!
#2
Отправлено 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/
#3
Отправлено 16 июня 2009 - 13:22
у нас же C++ приложение (прошу прощения, что сразу забыла об этом написать...)
да и хелпов этих у нас в QTP пока нет, как и самого плагина, впрочем.... :(
#4
Отправлено 16 июня 2009 - 15:47
К сожалению с таким контролом не доводилось работать.судя по названию, этот плагин для .Net приложений?
у нас же C++ приложение (прошу прощения, что сразу забыла об этом написать...)
да и хелпов этих у нас в QTP пока нет, как и самого плагина, впрочем.... :(
Как вариант:
- не пробовали принудительно его задать как WinTable?
- есть ли доступ к параметру 'Object', те WinTable(...).Object Или WinObject(...).Object?
#5
Отправлено 17 июня 2009 - 07:10
К сожалению с таким контролом не доводилось работать.
Как вариант:
- не пробовали принудительно его задать как WinTable?
- есть ли доступ к параметру 'Object', те WinTable(...).Object Или WinObject(...).Object?
Извините, я с QTP еще очень на "вы", поэтому хотела бы уточнить:
Имеется в виду замапить наш grid на класс WinTable через Object Identification dialog?- не пробовали принудительно его задать как WinTable?
если да, то сделать это не получилось, т.к. WinTable отсутствует в "Map To" списке доступных классов
пока не могу ответить на этот вопрос, т.к. не совсем хорошо разобралась с параметром Object и как с ним работать :(- есть ли доступ к параметру 'Object', те WinTable(...).Object Или WinObject(...).Object?
#6
Отправлено 17 июня 2009 - 13:48
Принудительно - попробовать так:Извините, я с QTP еще очень на "вы", поэтому хотела бы уточнить:
Имеется в виду замапить наш grid на класс WinTable через Object Identification dialog?- не пробовали принудительно его задать как WinTable?
если да, то сделать это не получилось, т.к. WinTable отсутствует в "Map To" списке доступных классов
пока не могу ответить на этот вопрос, т.к. не совсем хорошо разобралась с параметром Object и как с ним работать :(- есть ли доступ к параметру 'Object', те WinTable(...).Object Или WinObject(...).Object?
- c помощью Spy находим свойство грида с названием nativeclass ну или что-нить в этом роде
- открыть Object Repository
- нажать 'define new test object'
- выбрать class=WinTable
- задать значение nativeclass(используйте значение полученное в первом шаге)
Что до второго варианта:
то это может выглядеть так:
WinTable(...).Object.Rows(0).Cells(0) - в общем надо эксперементировать, object позволяет достучаться к свойствам, те спросив к примеру ваших девелоперов или проштудировав описание класса вашей таблички - вы можете узнать,какие свойства есть и как с ними можно работать.
Всё вышесказанное работает в .net - в с++ не было возможности поэксперементировать.
#7
Отправлено 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 интерфейсы работать с ячейками гридов
#8
Отправлено 19 июня 2009 - 06:07
По второму пункту ничего не скажу, а относительно первого - когда вы объявляете принудительно в OR таблицу, то это ещё не означает, что она будет распознаваться при записи скрипта для таблицы. - http://www.geekinter...n_details/45567К сожалению, оба способа не помогли, либо я что-то делаю не так :(...
1. Создала новый новый объект WinTable в Object Repository. Дальше при записи скрипта QTP создает в репозитории новый объект WinObject c тем же именем, что и ранее созданный WinTable.
2. При попытке достучаться через свойство Object выдается сообщение:
Object doesn't support this property or method: 'Window(...).Window(...).WinObject(...).object'
Так что продолжаю искать решение...
Видимо, придется как-то сложнее все решать - например, через COM интерфейсы работать с ячейками гридов
После того как вы добавили в OR вам надо проверить:
- можно ли подсветить объект(кнопка highlight) - и если нет то попробовать добавить ещё пару пропертей, если и после этого ничего не будет подсвечиваться, тогда "курить" гугл относительно с++ контролов vs qtp.
- если предыдущий шаг прошёл успешно, то руками в expert mode забиваем полный путь к вашей табличке и пробуем какие-нить стандартные для WinTable методы(по хелпу), ну и опять-таки, если не удастся то в гугл.
На крайний случай - можно ещё попробовать поработать с Extern.Declare, те написать свою dll и с ее помощью ставить эксперименты.
#9
Отправлено 19 июня 2009 - 08:43
К сожалению, тестовые объекты QTP для win32-объектовов не поддерживают метод Object, который позволяет достучаться до исходного элемента ПИ2. При попытке достучаться через свойство Object выдается сообщение:
Object doesn't support this property or method: 'Window(...).Window(...).WinObject(...).object'
Так что в этом направлении ничего сделать нельзя.
Если грид реализован как ActiveX, и у него есть COM-Интерфейс, то с ним можно попробовать как с ActiveX-объектом:Так что продолжаю искать решение...
Видимо, придется как-то сложнее все решать - например, через COM интерфейсы работать с ячейками гридов
- подключаете ActiveX add-in
- распознаете Ваш грид как AсtiveX-объект.
- далее через метод Object получаете собственно Ваш грид. (Как описано выше в п.2, но с той разницей, что для ActiveX-объектов поддерживается метод Object, который позволит Вам достучаться до COM-интерфейса грида).
Если приведенный способ не поможет, а грид простой, то можно просто по тексту искать нужные ячейки и работать с ними как с виртуальными объектами.
SQL для тестировщиков
Тренинги по HP QTP и автоматизации тестирования
Если минарет, значит выше всех (с)
#10
Отправлено 19 июня 2009 - 14:02
Но как только я попыталась использовать функции для WinTable (SelectCell, GetCellData...) QTP выругался, что действия недопустимые для объекта :((
Так что продолжаю борьбу и изыскания...
Спасибо вам большое за помощь!
#11
Отправлено 11 марта 2011 - 12:04
#12
Отправлено 11 марта 2011 - 15:29
Версия QTP И Windows?у меня точно такая же проблема, подскажите, как ее решить.
Что из предложенного вы уже попробовали?
Каким образом вам нужно работать с таблицей? Т.е. нужно просто получить ее содержимое или таблица содержит в себе какие-то объекты, с которыми надо работать, или еще что-нибудь?
SQL для тестировщиков
Тренинги по HP QTP и автоматизации тестирования
Если минарет, значит выше всех (с)
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных