Ожидание окна при меняющемся WndClass
#1
Отправлено 28 сентября 2011 - 06:27
Запускаю приложение и проверяю поялвение окна WaitWindow.
На одной машине параметр WndClass имеет, например такое значение: «WindowsForms10.Window.8.app.0.2e0c681» Но на других машинах или версиях тестируемого приложения, он меняется и код не срабатывает.
Приложение на C#.
Подскажите, пожалуйста, как правильно ждать появления нужного окна.
#2
Отправлено 28 сентября 2011 - 08:46
Здравствуйте. Возникла такая проблема.
Запускаю приложение и проверяю поялвение окна WaitWindow.
На одной машине параметр WndClass имеет, например такое значение: «WindowsForms10.Window.8.app.0.2e0c681» Но на других машинах или версиях тестируемого приложения, он меняется и код не срабатывает.
Приложение на C#.
Подскажите, пожалуйста, как правильно ждать появления нужного окна.
А какие еще значения может принимать параметр WndClass? Если все варианты имеют какую-либо неизменную часть, которая однозначно идентифицирует данный класс - то можно попробовать заменить изменяющуюся часть на "*", например "WindowsForms10.Window.8.app*" или "WindowsForms*". Звездочка здесь означает любую строку любой длинны, в том числе пустую.
А если данный параметр принимает вообще любые значения - то можно вместо метода WaitWindow воспользоваться например FindChild, где указать те свойства и их значения, которые смогут однозначно идентифицировать искомое окно, например свойство Caption.
#3
Отправлено 28 сентября 2011 - 09:14
Да, в WndClass меняются последние 7 символов, то есть вариант с "WindowsForms10.Window.8.app*" подошёл бы, но на экране есть ещё приложения такого же типа, которые подпадают под маску "WindowsForms10.Window.8.app*", так что пока надеюсь этого избежать.
Здравствуйте. Возникла такая проблема.
Запускаю приложение и проверяю поялвение окна WaitWindow.
На одной машине параметр WndClass имеет, например такое значение: «WindowsForms10.Window.8.app.0.2e0c681» Но на других машинах или версиях тестируемого приложения, он меняется и код не срабатывает.
Приложение на C#.
Подскажите, пожалуйста, как правильно ждать появления нужного окна.
А какие еще значения может принимать параметр WndClass? Если все варианты имеют какую-либо неизменную часть, которая однозначно идентифицирует данный класс - то можно попробовать заменить изменяющуюся часть на "*", например "WindowsForms10.Window.8.app*" или "WindowsForms*". Звездочка здесь означает любую строку любой длинны, в том числе пустую.
А если данный параметр принимает вообще любые значения - то можно вместо метода WaitWindow воспользоваться например FindChild, где указать те свойства и их значения, которые смогут однозначно идентифицировать искомое окно, например свойство Caption.
Искомое окно - это первое, главное окно программы. Если использовать FindChild - то потомком какого объекта оно должно считаться ?
#4
Отправлено 28 сентября 2011 - 09:45
#5
Отправлено 28 сентября 2011 - 11:01
Метод WaitWindow вызывается у кого-либо объекта/процесса и ищет именно те окна, которые являются дочерними. Например если у нас в системе запущено несколько калькуляторов, и допустим у всех у них открыто окно "О программе", и вы пишите Sys.Process("Calc", 3).WaitWindow("О программе"), то он найдет именно то окно, которое является дочерним к процессу Sys.Process("Calc"), другие окна других калькуляторов он даже не увидит. Другое дело если у вас на том же уровне в дереве ObjectBrowser существует несколько окон, попадающих под эту маску, тогда да.на экране есть ещё приложения такого же типа, которые подпадают под маску
На счет потомка - скорее всего оно будет потомком процесса Sys.Process("MyProcess"), но не факт, это лучше всего посмотреть в ObjectBrowser.
#6
Отправлено 28 сентября 2011 - 13:10
Для .NET приложений надо использовать WaitWinFormsObject - он ищет окна по имени или .NET-классу.Приложение на C#.
#7
Отправлено 28 сентября 2011 - 18:07
#8
Отправлено 29 сентября 2011 - 05:02
Есть ли такой же специфический метод для поиска окон на библиотеке QT ?
Все окна в такой программе имеют WndClass "QWidget"
#9
Отправлено 29 сентября 2011 - 05:08
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных