Как программы для автоматического тестирования GUI понимают, что написано, например, в третьей строчке какого-нибудь ListView в моей программе?
Это же разные процессы, разные адресные пространства.
Как устроены программы для автоматизации тестов?
Автор elle, 18 ноя 2004 09:50
Сообщений в теме: 3
#1
Отправлено 18 ноября 2004 - 09:50
#2
Отправлено 18 ноября 2004 - 11:10
Да. Но вот только к объектам GUI (которые с точки зрения Windows все поголовно являются окнами) есть доступ через WinAPI посредством window handles. Я не знаю подробностей (хранятся ли данные, относящиеся к объектам GUI в пространстве процесса или ОС - думаю, всё же, в пространстве OC), но точно знаю, что любая программа имеет доступ ко всем объектам пользовательского интерфейса через WinAPI, не только своим. И уж точно любому объекту пользовательского интерфеса можно послать любой WM (window message, event) - а window messages это основа работы любой программы для автоматизированного функционального тестирования.
Best regards,
Майк.
Майк.
#3
Отправлено 18 ноября 2004 - 12:06
Сообщение послать можно, но как контрол может ответить на это сообщение?
Чтобы ListView мог сказать, что в третьей строке у него написано то-то, ему нужно передать какой-то буфер.
Мы можем дать адрес буфера в адресном пространстве тестирующего приложения, но ListView может работать только с адреcным пространством своего GUI приложения.
Я плохо знаю WinAPI:( Было бы очень интересно посмотреть самый простой пример, в котором одно приложение считывает данные из control'а другого приложения.
Еще любопытно, как тоже самое реализуется в Java-приложениях. Там же нет window messages.
Чтобы ListView мог сказать, что в третьей строке у него написано то-то, ему нужно передать какой-то буфер.
Мы можем дать адрес буфера в адресном пространстве тестирующего приложения, но ListView может работать только с адреcным пространством своего GUI приложения.
Я плохо знаю WinAPI:( Было бы очень интересно посмотреть самый простой пример, в котором одно приложение считывает данные из control'а другого приложения.
Еще любопытно, как тоже самое реализуется в Java-приложениях. Там же нет window messages.
#4
Отправлено 18 ноября 2004 - 15:09
Если вам очень интересно как работает recording в инструментах автоматизированного функционального тестирования посмотрите WinRunner Customization Guide. Там есть пример custom функции, которая реализует recording на нестандартном элементе, т.е. элементе, который по умолчанию относится к классу object (generic в Rational Robot).
Win32 API позволяет вам не только посылать events различным контролам (на чем собственно и основано автоматическое воспроизведение действий пользователя), но также и получать значения любых свойств этих контролов, которые разработчик сделал доступными внешнему миру, т.е. например, не объявил их private. Поэтому получить значение из 3-ей строчки ListView никакого труда не составляет.
Java приложения не являются исключением. В среде Windows любой элемент вашего UI будет иметь свой window handle, который является ключом к работе с этим элементом через Win32 API.
Win32 API позволяет вам не только посылать events различным контролам (на чем собственно и основано автоматическое воспроизведение действий пользователя), но также и получать значения любых свойств этих контролов, которые разработчик сделал доступными внешнему миру, т.е. например, не объявил их private. Поэтому получить значение из 3-ей строчки ListView никакого труда не составляет.
Java приложения не являются исключением. В среде Windows любой элемент вашего UI будет иметь свой window handle, который является ключом к работе с этим элементом через Win32 API.
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных