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

Фотография

Определение компонента.


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

#21 Sudo -NAT

Sudo -NAT

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

  • Members
  • Pip
  • 21 сообщений
  • ФИО:Афонин Игорь Валодьевич

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

1: У Вас во время исполнения скрипта не вылетает никаких ошибок? У Вас в коде название и значение искомого св-ва без кавычек. По идее при выполнении должны выскакивать ошибки.
2: Какой тип у св-ва Text. Насколько я могу понять - строковый. Если да:
3: 10 это полное значение этого св-ва или подстрока?

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

1. Скрипт сробатывает как с кавычками так и без них, результат один и тот же.
2. Да, текстовый.
3. Полное значение, пробывал ещё по свойству Label искать, но опять результат тот же самый.
  • 0

#22 Dmitry N

Dmitry N

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

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 09 октября 2006 - 11:53

Здравствуйте.

p := Sys.Process('javaw').Window('SunAwtWindow', '', 1).JRootPane.null_layeredPane.null_contentPane.JCalendar.JPanel;
res := p.Find(text, 10, 1000); //Text - свойство которое содержит значение по которому я буду искать; 10 - значение которое я ищу.

Первый параметр этого метода строковый. Это значит, что вы должны передавать имя свойства в кавычках, или переменную, которая будет хранить строку с именем свойства.

p := Sys.Process('javaw').Window('SunAwtWindow', '', 1).JRootPane.null_layeredPane.null_contentPane.JCalendar.JPanel;
res := p.Find('Text', '10', 1000);
Потом, искомый объект должен быть либо дочерним объектом объекта 'JPanel', либо объектом, находящимся на еще более глубоком уровне вложенности.
  • 0
С уважением,
Дмитрий

#23 Brain

Brain

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

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

Отправлено 11 октября 2006 - 14:48

Sys.Process('iexplore').Window('IEFrame', 'Начало - blabla - Microsoft Internet Explorer', 1).Window('Shell DocObject View', '', 1).Window('Internet Explorer_Server', '', 1).Page('http://192.168.1.17/efno/').document.all.Item(42).click;
Sys.Process('iexplore').Window('IEFrame', ',blabla - Microsoft Internet Explorer', 1).Window('Shell DocObject View', '', 1).Window('Internet Explorer_Server', '', 1).Page('http://192.168.1.17/efno/?p=registrate').document.all.Item('new_user_login').value(gener);

Так не надо делать. Особенно вот так: document.all.Item(42).click;

Дело в том, что индексы неименованых объектов при повторном создании страницы могут поменяться и скрипт работать перестанет. Чтобы на ВЕБ форме найти нужный контрол (являющийся чайлдом какого-то другого контрола) можно использовать такой метод:

1. Получить Count всех чилдовых объектов определенного контрола и пробежать по ним в цикле. Item(i). i = [0, Count - 1] или [1, Count] -- точно не скажу.

2. Далее надо определить, значение какого конкретно свойства этого объекта отличает его от других Item-ов.

3. Потом у каждого такого контрола спросить, если у него такое свойство (кажется, был метод boolean Supports('property_name') или что-то подобное), чтобы не было ошибок на контролах, у которых такого свойства нет. Если свойство есть, проверить его значение на удовлетворение условию поиска.

Вот примерно так можно сделать.
  • 0

#24 Dmitry N

Dmitry N

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

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

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

Здравствуйте, Brain.

Все верно, только перебирать объекты проверяя значения свойств совсем не надо. Для этого есть набор специальных методов: Find, FindAll, FindChild, FindAllChildren, NativeWebObject.Find.
  • 0
С уважением,
Дмитрий


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

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