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

Фотография

Как описать компонету?


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

#1 aleshap

aleshap

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

  • Members
  • Pip
  • 16 сообщений
  • ФИО:АЛЕ

Отправлено 16 ноября 2006 - 07:28

Добрый день знатокам!

Недавно начал изучение Rational Robot в аспекте применения его в нашем проекте. Проект - это Дельфовое приложение со сплошь и радом динамическими формами, причем некоторые компоненты используем свои. Так вот при использовании Робота стоит проблема однозначного определения компоненты по какому либо уникальному свойству, а команды типа
PushButton Click, "Text=BBB1"
или
EditBox Click, "ID=2622820", "Coords=36,20"

не проходит т.к. текты бывают разные, и ID динамических форм тоже. Хочется что-то типа:
EditBox Click, "myName=Text1", "Coords=36,20"
где myName уникальное свойство компоненты.

Так вот вопрос. Каким образом описать компоненту и уникальное свойство, чтобы робот мог однозначно определить объект на форме


Помогите начинающему специалисту.
С уважением Алексей
  • 0

#2 serega

serega

    Опытный участник

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

Отправлено 16 ноября 2006 - 08:13

Tools/GUI Record Options/tab Object Recognition Order

Выбираем метод Text для своего контрола и пробуем еще раз
Удачи
  • 0

#3 aleshap

aleshap

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

  • Members
  • Pip
  • 16 сообщений
  • ФИО:АЛЕ

Отправлено 16 ноября 2006 - 08:24

Спасибо но, с методом Text все отлично, проблема в том что, например есть тип объекта EditBox. Robot при записи по Text определяет его хорошо, но эта форма может подыматься с различными значениями сво-ва Text объета EditBox и тогда при проигрывании скрипта Робот его уже не видит.
  • 0

#4 aleshap

aleshap

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

  • Members
  • Pip
  • 16 сообщений
  • ФИО:АЛЕ

Отправлено 16 ноября 2006 - 08:29

или например текст кнопки, он тоже может меняться. И тогда команда типа
PushButton Click, "Text=Провести"
не всегда работает

Необходимо какое-то уникальное св-во которое можно добавить в компоненту и Робот бы ее понял. Но как это сделать?
  • 0

#5 Tiana

Tiana

    Активный участник

  • Members
  • PipPip
  • 81 сообщений
  • ФИО:Girnyk S. Tatyana
  • Город:Украина, Харьков

Отправлено 16 ноября 2006 - 09:49

Так вот вопрос. Каким образом описать компоненту и уникальное свойство, чтобы робот мог однозначно определить объект на форме

Мне кажется, что уникальные свойства компонент задаются разработчиком, а RR только оперирует с их помощью. Вы же не можете добавить свойство для определенного типа контрола? Т.е. если свойства компонентов формы не заданы и генерируются динамически, то единственный выход - попросить разработчиков задавать уникальные осмысленные имена / Id-шники. :crazy:
  • 0

#6 aleshap

aleshap

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

  • Members
  • Pip
  • 16 сообщений
  • ФИО:АЛЕ

Отправлено 16 ноября 2006 - 10:04

Мне кажется, что уникальные свойства компонент задаются разработчиком


Так в своем роде мы и являемся разработчиками. И в нашей власти лежит можем ли мы добавить свойство или нет. Другой вопрос, а найдет ли его RR - пока что у меня этого не получилось.

попросить разработчиков задавать уникальные осмысленные имена / Id-шники


А что вы имеете в виду под "уникальные осмысленные имена", как я понял RR не может получить имя компоненты, а лишь его текстовое представление, которое как я уже говорил может меняться. На ID, к сожаления завязаться не могу.
  • 0

#7 serega

serega

    Опытный участник

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

Отправлено 16 ноября 2006 - 10:33

Мне кажется, проблема зарыта в стратегии тестирования

Как я понимаю, нужно протестировать именнно динамичность свойств компонента, тогда зачем харкодить в роботе наименование, ID и т.п.

По идее вы должны знать, когда и какое свойство примет определенное значение, вот и зашивайтесь на это в скриптах
  • 0

#8 Tiana

Tiana

    Активный участник

  • Members
  • PipPip
  • 81 сообщений
  • ФИО:Girnyk S. Tatyana
  • Город:Украина, Харьков

Отправлено 16 ноября 2006 - 10:56

А что вы имеете в виду под "уникальные осмысленные имена",

Имя, которое не изменяется, либо имя, которое генерируется по определенному правилу.

как я понял RR не может получить имя компоненты, а лишь его текстовое представление, которое как я уже говорил может меняться. На ID, к сожаления завязаться не могу.

я понимаю так, что если RR не может получить имя корректно распознаваемой компоненты (имею ввиду не Generic), значит оно не задано.
  • 0

#9 aleshap

aleshap

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

  • Members
  • Pip
  • 16 сообщений
  • ФИО:АЛЕ

Отправлено 16 ноября 2006 - 10:57

По идее вы должны знать, когда и какое свойство примет определенное значение, вот и зашивайтесь на это в скриптах


В том-то дело что есть случаи, когда я не знаю заранее текстовое значение объекта.

И хотелось бы максимально упростит поиск его на форме по уникальному идентификатору, который введен у каждой компоненты, но RR не видит этот идентификатор.
  • 0

#10 aleshap

aleshap

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

  • Members
  • Pip
  • 16 сообщений
  • ФИО:АЛЕ

Отправлено 16 ноября 2006 - 11:03

for Tiana

Имя, которое не изменяется, либо имя, которое генерируется по определенному правилу.
...
я понимаю так, что если RR не может получить имя корректно распознаваемой компоненты (имею ввиду не Generic), значит оно не задано.


Оно есть - это свойство Name и оно 100% задано. В Delphi оно есть у всех компонент и оно уникально, но RR его не видит. Или я просто не умею его получать?
  • 0

#11 Tiana

Tiana

    Активный участник

  • Members
  • PipPip
  • 81 сообщений
  • ФИО:Girnyk S. Tatyana
  • Город:Украина, Харьков

Отправлено 16 ноября 2006 - 11:10

Заинтриговали :crazy:
А как вы пробуете его получить?
  • 0

#12 Clauster

Clauster

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

  • Members
  • PipPipPipPipPipPip
  • 1 913 сообщений
  • ФИО:Худобородов Валерий
  • Город:Espoo

Отправлено 16 ноября 2006 - 11:13

Tools->Inspector...
  • 0

#13 Tiana

Tiana

    Активный участник

  • Members
  • PipPip
  • 81 сообщений
  • ФИО:Girnyk S. Tatyana
  • Город:Украина, Харьков

Отправлено 16 ноября 2006 - 11:24

Tools->Inspector...

Просмотр сообщения

Интересно как aleshap пытается получить свойство Name объекта. Ведь если свойство Name задано, то Inspector должен видеть свойство Name распознаваемого объекта и как следствие - возможность выполнить действие над объектом по его уникальному имени?
  • 0

#14 greyver

greyver

    Опытный участник

  • Members
  • PipPipPipPip
  • 358 сообщений
  • ФИО:Вербенко Сергей Анатольевич
  • Город:Москва, Зеленоград


Отправлено 16 ноября 2006 - 11:35

Позвольте вмешаться. А delphi enabler у вас установлен?
  • 0

#15 aleshap

aleshap

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

  • Members
  • Pip
  • 16 сообщений
  • ФИО:АЛЕ

Отправлено 16 ноября 2006 - 11:50

for Tiana
метод каким образом я пробую получить, так это:

Result=SQAGetChildren(".\",children)
for ii=1 to UBound(children)
Result = SQAGetPropertyNames(children(ii), Properties)
if Result=0 then
for iii=1 to UBound(Properties)
Result = SQAGetProperty(children(ii), Properties(iii),Value)
if Result=0 then MsgBox children(ii)+" == "+Properties(iii)+" = "+Value+" ; "
next
end if
next

Соответственно в списке который выдает процедура нет св-ва Name
  • 0

#16 aleshap

aleshap

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

  • Members
  • Pip
  • 16 сообщений
  • ФИО:АЛЕ

Отправлено 16 ноября 2006 - 11:51

Позвольте вмешаться. А delphi enabler у вас установлен?


А вот с этого момента, если можно то поподробнее, что это и где его взять...
Думаю что нет не установлен.
  • 0

#17 greyver

greyver

    Опытный участник

  • Members
  • PipPipPipPip
  • 358 сообщений
  • ФИО:Вербенко Сергей Анатольевич
  • Город:Москва, Зеленоград


Отправлено 16 ноября 2006 - 12:08

Где взять не знаю - не использовал.
Пройдитесь поиском по "delphi enabler".
  • 0

#18 Tiana

Tiana

    Активный участник

  • Members
  • PipPip
  • 81 сообщений
  • ФИО:Girnyk S. Tatyana
  • Город:Украина, Харьков

Отправлено 16 ноября 2006 - 12:17

for Tiana
метод каким образом я пробую получить, так это:

  Result=SQAGetChildren(".\",children)
  for ii=1 to UBound(children)
    Result = SQAGetPropertyNames(children(ii), Properties)
    if Result=0 then
        for iii=1 to UBound(Properties)
        Result = SQAGetProperty(children(ii), Properties(iii),Value)
        if Result=0 then MsgBox children(ii)+"  ==  "+Properties(iii)+" = "+Value+"  ;  "
        next
    end if
  next

Соответственно в списке который выдает процедура нет св-ва Name

Просмотр сообщения

aleshap, а вам необходимо получить Name только программным способом?
Получает ли Inspector свойство Name данного объекта?
Если Inspector получает, то думаю, что это особенности работы с функцией SQAGetChildren.
  • 0

#19 aleshap

aleshap

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

  • Members
  • Pip
  • 16 сообщений
  • ФИО:АЛЕ

Отправлено 16 ноября 2006 - 12:51

Вот окно инспектора... как видно никакого свойства Name там, нет.

Изображение

Нет также явных идеинтификаторов.

Прикрепленные файлы

  • Прикрепленный файл  Pic.jpg   58,54К   54 Количество загрузок:

  • 0

#20 Clauster

Clauster

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

  • Members
  • PipPipPipPipPipPip
  • 1 913 сообщений
  • ФИО:Худобородов Валерий
  • Город:Espoo

Отправлено 16 ноября 2006 - 13:33

Позвольте вмешаться. А delphi enabler у вас установлен?

Просмотр сообщения

Как говорил Козьма Прутков: "Зри в корень!"
  • 0


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

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