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

Фотография

Как различать одинаковые окна


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

#1 LeonP

LeonP

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

  • Members
  • Pip
  • 56 сообщений
  • Город:Петербург/Москва

Отправлено 25 октября 2004 - 13:01

Коллеги,
подскажите, а как в Роботе работать с одинаковыми окнами? Если открыты несколько окон с одинаковым Caption, то как Роботу указать на нужное?
  • 0

#2 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 26 октября 2004 - 05:44

Знакомая проблема. Закройте лишние окна :)
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#3 LeonP

LeonP

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

  • Members
  • Pip
  • 56 сообщений
  • Город:Петербург/Москва

Отправлено 26 октября 2004 - 06:06

Нееее, это нужные мне окна :)) Я хочу их открыть, а потом использовать :)
  • 0

#4 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 26 октября 2004 - 06:33

Тогда ответ будет более серьёзным.

Есть такая характеристика качества -- testability, то есть удобство тестирования (для любителей стандартов -- см. ISO 9126). Разумеется, удобство определяется исходя из имеющихся в Вашем распоряжении средств. Так вот, Ваше приложение имеет недостатки в плане достижения этой характеристики качества. Оно неудобно для тестирования.

Предлагаю повысить testability -- попросите разработчиков сделать так, чтобы у разных окон были разные заголовки, если это важно для тестирования. Если Вы не хотите, чтобы в конечном продукте были разные заголовки, попросите сделать специальный режим запуска приложения "для тестирования" с разными заголовками.
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#5 LeonP

LeonP

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

  • Members
  • Pip
  • 56 сообщений
  • Город:Петербург/Москва

Отправлено 26 октября 2004 - 06:52

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

#6 Dmitry_NJ

Dmitry_NJ

    Консультант

  • Members
  • PipPipPipPipPipPip
  • 3 122 сообщений
  • ФИО:Дмитрий Шевченко
  • Город:New Jersey, USA

Отправлено 26 октября 2004 - 08:00

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

А переключение между окнами тоже должно работать. Задержки побольше поставьте, скорее всего в них проблема.
  • 0
Дмитрий Шевченко

HP Software

#7 vberzin

vberzin

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

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

Отправлено 03 ноября 2004 - 09:20

Играйтесь с метолдом идентификации объектов команды Window. Вообще говоря - можно к объектам обращаться не по заголовку а по имени объекта, который разработчик ему присвоил (Свойство name).
Если окна реализованы как массив объектов, то действительно можно использховать свойство Index

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

Если речь идет о разных копиях браузера - то в апраметрах идентификации есть WindowTag специально для этих целей.
  • 0

#8 LeonP

LeonP

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

  • Members
  • Pip
  • 56 сообщений
  • Город:Петербург/Москва

Отправлено 03 ноября 2004 - 09:41

Если речь идет о разных копиях браузера - то в апраметрах идентификации есть WindowTag специально для этих целей.

Спасибо за ответ!
Речь идет об окнах Terminal Services клиента
  • 0

#9 vberzin

vberzin

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

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

Отправлено 03 ноября 2004 - 10:54

Это я уже понял из других форумов ;)
с терминалсервисом у робота туговато. То есть, запустить клиента терминалки как обычное приложение - проблем не составит. Переключаться между окнами тогда действительно лучше через таскбар явно оперируя индексами.
А вот производить воздействие внутри окон клиента проблематично. Объектно-ориентированная запись не работает, поскольку содержимое окна терминального клиента для робота - просто картинка. Тыкать мышкой будет, кнопки нажимать тоже - но не распознавая внутренние объекты.
Что могу посоветовать в этом случае:
1. Попробовать, как уже советовали ранее, использовать скрипты автозапуска клиента или netlogin.
2. Действовать через экранные координаты
3. По максимуму оперировать клавиатурой (табуляция и прочие кнопки) - в этом случае независимо от того, что объекты не парзятся - можно будет проводить операции с объектами в окнах.
  • 0

#10 SigMA

SigMA

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

  • Members
  • Pip
  • 44 сообщений
  • ФИО:Михаил Сигал
  • Город:Россия, г.Самара

Отправлено 26 декабря 2006 - 13:56

Хотя проблема была поднята давно, приемлемого решения предложено не было.
Может быть сейчас кто-то сможет посоветовать как различать одинаковые (по заголовку) окна?
Может быть можно хендлер окна получить, чтобы потом по нему к окну обращаться или еще как?
  • 0
Михаил Сигал
НПЦ "Инфосфера"

#11 kasper

kasper

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

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

Отправлено 19 января 2007 - 17:02

Может быть можно хендлер окна получить, чтобы потом по нему к окну обращаться или еще как?


ИМХО вполне приемлемый способ.

После запуска каждого нового окна (а оно сразу после запуска будет активным) запоминаете его хендл в переменную. Потом пишите что нужно сделать некоторое действие над окном у которого хендл равен соотв. переменной.

Возможно придется сделать алгоритм перебора всех окон по индексу и присваивать только новое значение хендла следующей переменной.
  • 0

#12 SigMA

SigMA

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

  • Members
  • Pip
  • 44 сообщений
  • ФИО:Михаил Сигал
  • Город:Россия, г.Самара

Отправлено 21 января 2007 - 12:23

Может быть можно хендлер окна получить, чтобы потом по нему к окну обращаться или еще как?


ИМХО вполне приемлемый способ.

После запуска каждого нового окна запоминаете его хендл в переменную. Потом пишите что нужно сделать некоторое действие над окном у которого хендл равен соотв. переменной.

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


Как раз и проблема в том, что я не нашел, как в роботе по хендлеру к окну обращаться.
  • 0
Михаил Сигал
НПЦ "Инфосфера"

#13 kasper

kasper

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

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

Отправлено 27 января 2007 - 00:06

Может быть можно хендлер окна получить, чтобы потом по нему к окну обращаться или еще как?


ИМХО вполне приемлемый способ.

После запуска каждого нового окна запоминаете его хендл в переменную. Потом пишите что нужно сделать некоторое действие над окном у которого хендл равен соотв. переменной.

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


Как раз и проблема в том, что я не нашел, как в роботе по хендлеру к окну обращаться.

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



Как и в большинстве подобных случаев, выход один - использовать вызов функций Win32 API. Ето хоть не так удобно как готовые команды, но зато позволит вам буквально "безпредельничать" с Робота :)
  • 0


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

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