Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Вниз

Поиск объектов на экране   Найти похожие ветки 

 
kingdom ©   (2004-03-29 12:29) [0]

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

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

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


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

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


 
kingdom ©   (2004-03-29 13:14) [2]

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

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


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


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

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


 
kingdom ©   (2004-03-29 17:34) [4]

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


 
kingdom ©   (2004-03-30 12:06) [5]

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


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

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


 
kingdom ©   (2004-03-31 11:10) [7]

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


 
Anatoly Podgoretsky ©   (2004-03-31 12:08) [8]

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


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

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


 
kingdom ©   (2004-03-31 16:03) [10]

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

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


 
BiN ©   (2004-03-31 16:14) [11]

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


 
kingdom ©   (2004-03-31 21:19) [12]

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


 
Anatoly Podgoretsky ©   (2004-04-01 10:41) [13]

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


 
BiN ©   (2004-04-01 11:42) [14]

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

Shell Object
ShellWindows object
InternetExplorer object


 
kingdom ©   (2004-04-02 14:04) [15]

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

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

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

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

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


 
BiN ©   (2004-04-02 14:37) [16]

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


 
kingdom ©   (2004-04-02 14:40) [17]

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


 
BiN ©   (2004-04-02 15:03) [18]

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

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



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.036 c
1-1083727629
Bulanov
2004-05-05 07:27
2004.05.16
Процедура.


3-1082485263
Igoro4ek
2004-04-20 22:21
2004.05.16
Ошибка при создании таблицы


3-1082447326
nnn
2004-04-20 11:48
2004.05.16
запрос


14-1083029167
[Ph@ntom]
2004-04-27 05:26
2004.05.16
Изображения


8-1077179147
AlexV
2004-02-19 11:25
2004.05.16
Повернуть изображение в TImage на 90 градусов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский