Как различать одинаковые окна
#1
Отправлено 25 октября 2004 - 13:01
подскажите, а как в Роботе работать с одинаковыми окнами? Если открыты несколько окон с одинаковым Caption, то как Роботу указать на нужное?
#2
Отправлено 26 октября 2004 - 05:44
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#3
Отправлено 26 октября 2004 - 06:06
#4
Отправлено 26 октября 2004 - 06:33
Есть такая характеристика качества -- testability, то есть удобство тестирования (для любителей стандартов -- см. ISO 9126). Разумеется, удобство определяется исходя из имеющихся в Вашем распоряжении средств. Так вот, Ваше приложение имеет недостатки в плане достижения этой характеристики качества. Оно неудобно для тестирования.
Предлагаю повысить testability -- попросите разработчиков сделать так, чтобы у разных окон были разные заголовки, если это важно для тестирования. Если Вы не хотите, чтобы в конечном продукте были разные заголовки, попросите сделать специальный режим запуска приложения "для тестирования" с разными заголовками.
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#5
Отправлено 26 октября 2004 - 06:52
На самом деле окна эти чужие, поэтому менять их сложно. Я попробовал побороть их так: первое открывается, в нем делается то, что нужно, оно сворачивается в таскбар, открывается второе, в нем делается то, что нужно и т.д.
Если выполнять этот скрипт по строкам, то все ок, если же запускать прогон полностью, то в тот момент, когда должны выполняться операции со вторым окном где-то кто-то не получает фокус. Видимо возникают какие-то гонки и нужные объекты еще не созданы(отображены) , а с ними уже пытаюсь работать.
Думал есть методы как-то обойти это, ан нет :(
Спасибо, за ответ, пойду дальше разбираться
#6
Отправлено 26 октября 2004 - 08:00
А переключение между окнами тоже должно работать. Задержки побольше поставьте, скорее всего в них проблема.
#7
Отправлено 03 ноября 2004 - 09:20
Если окна реализованы как массив объектов, то действительно можно использховать свойство Index
Если речь идет о разных запущенных копиях одного приложений, то стоит поступить таким образом:
Создать процедурку, которая будет устанавливать контекст на нужном вам окне (например оперируя с индексами объектов в таскбаре). И для переключения между окнами используйте ее.
Если речь идет о разных копиях браузера - то в апраметрах идентификации есть WindowTag специально для этих целей.
#8
Отправлено 03 ноября 2004 - 09:41
Спасибо за ответ!Если речь идет о разных копиях браузера - то в апраметрах идентификации есть WindowTag специально для этих целей.
Речь идет об окнах Terminal Services клиента
#9
Отправлено 03 ноября 2004 - 10:54
с терминалсервисом у робота туговато. То есть, запустить клиента терминалки как обычное приложение - проблем не составит. Переключаться между окнами тогда действительно лучше через таскбар явно оперируя индексами.
А вот производить воздействие внутри окон клиента проблематично. Объектно-ориентированная запись не работает, поскольку содержимое окна терминального клиента для робота - просто картинка. Тыкать мышкой будет, кнопки нажимать тоже - но не распознавая внутренние объекты.
Что могу посоветовать в этом случае:
1. Попробовать, как уже советовали ранее, использовать скрипты автозапуска клиента или netlogin.
2. Действовать через экранные координаты
3. По максимуму оперировать клавиатурой (табуляция и прочие кнопки) - в этом случае независимо от того, что объекты не парзятся - можно будет проводить операции с объектами в окнах.
#10
Отправлено 26 декабря 2006 - 13:56
Может быть сейчас кто-то сможет посоветовать как различать одинаковые (по заголовку) окна?
Может быть можно хендлер окна получить, чтобы потом по нему к окну обращаться или еще как?
НПЦ "Инфосфера"
#11
Отправлено 19 января 2007 - 17:02
Может быть можно хендлер окна получить, чтобы потом по нему к окну обращаться или еще как?
ИМХО вполне приемлемый способ.
После запуска каждого нового окна (а оно сразу после запуска будет активным) запоминаете его хендл в переменную. Потом пишите что нужно сделать некоторое действие над окном у которого хендл равен соотв. переменной.
Возможно придется сделать алгоритм перебора всех окон по индексу и присваивать только новое значение хендла следующей переменной.
#12
Отправлено 21 января 2007 - 12:23
Может быть можно хендлер окна получить, чтобы потом по нему к окну обращаться или еще как?
ИМХО вполне приемлемый способ.
После запуска каждого нового окна запоминаете его хендл в переменную. Потом пишите что нужно сделать некоторое действие над окном у которого хендл равен соотв. переменной.
Как раз и проблема в том, что я не нашел, как в роботе по хендлеру к окну обращаться.
НПЦ "Инфосфера"
#13
Отправлено 27 января 2007 - 00:06
Может быть можно хендлер окна получить, чтобы потом по нему к окну обращаться или еще как?
ИМХО вполне приемлемый способ.
После запуска каждого нового окна запоминаете его хендл в переменную. Потом пишите что нужно сделать некоторое действие над окном у которого хендл равен соотв. переменной.
Как раз и проблема в том, что я не нашел, как в роботе по хендлеру к окну обращаться.
Как и в большинстве подобных случаев, выход один - использовать вызов функций Win32 API. Ето хоть не так удобно как готовые команды, но зато позволит вам буквально "безпредельничать" с Робота :)
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных