Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поиск объектов на экране


kingdom ©   (2004-03-29 12:29:00) 

Есть такая задача по тестированию софта и web-страниц...
нужно находить объекты на экране, например:
- окно
- меню
- кнопка
- текст
- гипер текст
и получать о них информацию, например:
- цвет
- название кнопки/меню/окна
- содержимое текста
а также выполнять с ними действия, например:
- нажиметь на кнопки и меню
- перетаскивать окна

Как пример, могу назвать SnagIt, который умеет распозновать ОБЪЕКТЫ на экране, даже в IE, это для меня важно.

Вопрос в том как НАЙТИ эти объекты?
Для окон и кнопок подходит EnumWinows, хотя внутрь IE оно не попадает =(, а как найти остальные объекты, как это делает snagIt?


BiN   (2004-04-02 15:03:00) [1]

... вы по сути предлагаете "парсить" документ через COM, а мне надо протестировать страницу отображаемую IE

Не через COM, думаю, это сделать будет затруднительно. И твой SnagIt, по-видимому, работает именно так.
Получив объект Document в свое распоряжение, ты можешь через Forms и их Elements получить всю интересующую тебя информацию.


kingdom   (2004-04-02 14:40:00) [2]

>BiN
Сошласен это вопрос спорный, но в очередной раз сошлюсь на SnagIt, как он объекты распознает?


BiN   (2004-04-02 14:37:00) [3]

Первый вопрос, действительно ли это так?
Врятли было бы разумно использовать в качестве активных элементов страницы объекты ядра, коими и являются окна ( вмндовые button, checkbox и т.д).


kingdom   (2004-04-02 14:04:00) [4]

>Anatoly Podgoretsky
>IE является сом сервером.
это понятно, а что делать-то?

>BiN
это тоже самое что MSHTML и DHTML, но он не дает информации о местоположении объектов!!!

Спасибо всем за советы, но вы по сути предлагаете "парсить" документ через COM, а мне надо протестировать страницу отображаемую IE.

Например, вы сейчас читаете эту страницу, а мой тест должен проверить, что:
- внизу страницы находиться три поля для ввода (имя, мыло и сообщение)
- у последнего есть полоса прокрутки
- есть кнопки "Ж", "К", "Ч", "КОД" и ">" (если это текст, а не картинки)
- есть кнопка "Добавить"
- есть рекламный банер
и т.д.

Я предполагаю, что перечисленные объекты рисуются на экране с помощью стандартных WinApi'шных функций, т.е. содержимое окна, не есть литая картинка, которая рисуется по событию WM_PAINT. А используются вмндовые button, checkbox и т.д.
Первый вопрос, действительно ли это так? А второй как пролезть внутрь окна? Влоб через EnumWindowChild не получается. А вот SnagIt прекрасно распознает объекты!


BiN   (2004-04-01 11:42:00) [5]

Если описалово есть в MSDN, укажите раздел или какой-нить ключ

Shell Object
ShellWindows object
InternetExplorer object


Anatoly Podgoretsky   (2004-04-01 10:41:00) [6]

kingdom ©   (31.03.04 16:03) [10]
IE является сом сервером.


kingdom   (2004-03-31 21:19:00) [7]

>BiN
Ответ может и правильный, только не понятный )))
Если описалово есть в MSDN, укажите раздел или какой-нить ключ


BiN   (2004-03-31 16:14:00) [8]

в посте [3] тебе дан правильный ответ
нужно использовать объекты Shell.Application и .Windows иже с ним


kingdom   (2004-03-31 16:03:00) [9]

>Anatoly Podgoretsky
А как их искать в окнах? И как их искать внутри IE?
Например, кнопку на форме можно найти через EnumWindows, а вот кнопку на странице в IE не понятно как искать...

>хамло )
В MSHTML нет информации о координатах объектов => где это берет SngIt, хотя ссылки для гипертекста он извлекает возможно через MSHTML


хамло )   (2004-03-31 12:20:00) [10]

MSHTML.pas - для разбора веб-страниц.
очень хорошо работает. сам когда-то разбирал страницы. строил приложения для автозаполнения веб-форм.


Anatoly Podgoretsky   (2004-03-31 12:08:00) [11]

На экране нет объектов, только точки, объекты ищи в окнах.


kingdom   (2004-03-31 11:10:00) [12]

Я конечно не исключаю, что SnagIt может просто сканировать экран и распознавать текст, но есть такие факты:
- как я уже говорил, он понимает гипертекст, т.е. может извлечь ссылку
- если html содержит картинку, то он понимает ее как картинку, а не как часть экрана, т.е. текст на картинке он прочитать не может


TUser   (2004-03-30 13:02:00) [13]

Вот например, распознать текст и отличить его от гипертекста - это та еще задачка. Непросто это, я думаю.


kingdom   (2004-03-30 12:06:00) [14]

Сильные программисты!
Есть какие-нибудь идеи?


kingdom   (2004-03-29 17:34:00) [15]

>Algol
Я конечно посмотрю, но скорее всего это не поможет


Algol   (2004-03-29 15:30:00) [16]


> но SnagIt это как-то делает! как?

Возможно через COM интерфейс...


kingdom   (2004-03-29 13:14:00) [17]

>Семен Сорокин
Спасибо за ответ!
Но Spy почему-то не может пролезть внуть web-страницы =(
он находит окно Internet Explorer_Server и все

но SnagIt это как-то делает! как?


Семен Сорокин   (2004-03-29 12:30:00) [18]

Spy++ из поставки VS


Наверх

Титульная страница Поиск, карта сайта Написать письмо