Перейти к содержимому

Фотография

Сравнение регионов


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 9

#1 julia.ap

julia.ap

    Новый участник

  • Members
  • Pip
  • 23 сообщений

Отправлено 19 ноября 2008 - 15:47

Добрый день!

TestComplete 6, Deplphi-script, web application. Редактирую на странице таблицу (допустим), применяю изменения. Вежливое приложение уведомляет меня (в идеале), что изменения были применены. Делает оно это с помощью какого-то стандартного MessageBox'a со с единственным пиремлемым свойством full name : Sys.Process('iexplore').Window('#32770', 'Windows Internet Explorer', 1). Ну и кнопка ОК.

Что нужно: быть уверенным, что вежливое приложение меня уведомило именно в том, что изменения были сохранены, а не "Какая-то ошибка, обратитесь к разработчикам" или "Ошибка с кодом -666" (ПО в первой стадии разработки).

Решение, котороя я нашла: Сравнивать картинку. Т.е сохраняю это окно с кнопкой ОК, ловлю что мне показывают и сравниваю.

Проблема: всегда говорит, что The regions are not identical, потому что посередине картинки у меня есть 1 (!) новый пиксел. иногда 2-3 пиксела.

Вопрос: как это обойти? Может быть есть еще способы узнать, что мне сказало приложение на сохранение изменений?
  • 0

#2 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 20 ноября 2008 - 11:39

Здравствуйте.

Должно получиться так:
//DelphiScript
Log.Message(Sys.Process('IEXPLORE').Window('#32770', 'Windows Internet Explorer', 1).Window('Static', '*', 3).WndCaption);

  • 0
С уважением,
Дмитрий

#3 julia.ap

julia.ap

    Новый участник

  • Members
  • Pip
  • 23 сообщений

Отправлено 28 ноября 2008 - 08:45

Здравствуйте.

Должно получиться так:

//DelphiScript
Log.Message(Sys.Process('IEXPLORE').Window('#32770', 'Windows Internet Explorer', 1).Window('Static', '*', 3).WndCaption);



Да, но тогда я выхватываю только заголовок окна, а не то, что в нем написано. Заголовок у окон всегда один - Windows Internet Explorer...
  • 0

#4 Mila

Mila

    Постоянный участник

  • Members
  • PipPipPip
  • 192 сообщений
  • Город:Санкт-Петербург

Отправлено 01 декабря 2008 - 11:37

Добрый день!

TestComplete 6, Deplphi-script, web application. Редактирую на странице таблицу (допустим), применяю изменения. Вежливое приложение уведомляет меня (в идеале), что изменения были применены. Делает оно это с помощью какого-то стандартного MessageBox'a со с единственным пиремлемым свойством full name : Sys.Process('iexplore').Window('#32770', 'Windows Internet Explorer', 1). Ну и кнопка ОК.

Что нужно: быть уверенным, что вежливое приложение меня уведомило именно в том, что изменения были сохранены, а не "Какая-то ошибка, обратитесь к разработчикам" или "Ошибка с кодом -666" (ПО в первой стадии разработки).

Решение, котороя я нашла: Сравнивать картинку. Т.е сохраняю это окно с кнопкой ОК, ловлю что мне показывают и сравниваю.

Проблема: всегда говорит, что The regions are not identical, потому что посередине картинки у меня есть 1 (!) новый пиксел. иногда 2-3 пиксела.

Вопрос: как это обойти? Может быть есть еще способы узнать, что мне сказало приложение на сохранение изменений?


Немного странно, что появляются новые пикселы.
Когда у меня было приложение с мигающими маркерами ошибок в форме ввода, то я просто делала несколько скриншотов и писала собственную функцию сравнения, в которой проверялось соответствие не одной картинке, а группе картинок... и при совпадении хотя бы с одной, вердикт был ОК. Картинки сравнивались функциями ТС.

Ну и может стоит посмотреть свойства окна с сообщением и выяснить в каком свойстве содержится надпись? Т.к., ИМХО, в данном случае проще сравнить текст, как уже предложили коллеги. Предыдущий вариант написала скорее на будущее, чтобы было.
  • 0

#5 julia.ap

julia.ap

    Новый участник

  • Members
  • Pip
  • 23 сообщений

Отправлено 02 декабря 2008 - 07:03

Немного странно, что появляются новые пикселы.
Когда у меня было приложение с мигающими маркерами ошибок в форме ввода, то я просто делала несколько скриншотов и писала собственную функцию сравнения, в которой проверялось соответствие не одной картинке, а группе картинок... и при совпадении хотя бы с одной, вердикт был ОК. Картинки сравнивались функциями ТС.

Ну и может стоит посмотреть свойства окна с сообщением и выяснить в каком свойстве содержится надпись? Т.к., ИМХО, в данном случае проще сравнить текст, как уже предложили коллеги. Предыдущий вариант написала скорее на будущее, чтобы было.


В том то и дело, что окно какое-то очень стандартное, текст сообщения не выдергивается. пока спасаюсь свойством transparent у Compare, но это не вариант - сообщений куча, приходится хранить кучу картинок с закрашенными местами. А вдруг новые пикселы появятся вд ругом мете? Весь тест полетит...
  • 0

#6 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 02 декабря 2008 - 07:42

Здравствуйте.

Да, но тогда я выхватываю только заголовок окна, а не то, что в нем написано. Заголовок у окон всегда один - Windows Internet Explorer...

Не может такого быть. Вы пробовали запускать этот скрипт?
  • 0
С уважением,
Дмитрий

#7 julia.ap

julia.ap

    Новый участник

  • Members
  • Pip
  • 23 сообщений

Отправлено 08 декабря 2008 - 07:42

Здравствуйте.

Да, но тогда я выхватываю только заголовок окна, а не то, что в нем написано. Заголовок у окон всегда один - Windows Internet Explorer...

Не может такого быть. Вы пробовали запускать этот скрипт?


Конечно, он мне сохраняет заголовок :(
  • 0

#8 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 08 декабря 2008 - 12:35

Здравствуйте.

Log.Message(Sys.Process('IEXPLORE').Window('#32770', 'Windows Internet Explorer', 1).Window('Static', '*', 3).WndCaption);
Этот скрипт берёт окно с заголовком 'Windows Internet Explorer' (а именно Sys.Process('IEXPLORE').Window('#32770', 'Windows Internet Explorer', 1)), и у его _дочернего_ объекта, который представляет собой текст окна (не заголовок, а именно текст внутри), берет этот самый текст через свойство WndCaption. При вызове метода Window('Static', '*', 3) второй параметр является '*', так как именно он и должен содержать интересующий нас текст, который в момент получения объекта нам неизвестен.

Я не знаю, как это может не работать. Пришлите картинку окошка, может это что-нибудь прояснит.
  • 0
С уважением,
Дмитрий

#9 julia.ap

julia.ap

    Новый участник

  • Members
  • Pip
  • 23 сообщений

Отправлено 11 декабря 2008 - 07:29

Здравствуйте.

Log.Message(Sys.Process('IEXPLORE').Window('#32770', 'Windows Internet Explorer', 1).Window('Static', '*', 3).WndCaption);
Этот скрипт берёт окно с заголовком 'Windows Internet Explorer' (а именно Sys.Process('IEXPLORE').Window('#32770', 'Windows Internet Explorer', 1)), и у его _дочернего_ объекта, который представляет собой текст окна (не заголовок, а именно текст внутри), берет этот самый текст через свойство WndCaption. При вызове метода Window('Static', '*', 3) второй параметр является '*', так как именно он и должен содержать интересующий нас текст, который в момент получения объекта нам неизвестен.

Я не знаю, как это может не работать. Пришлите картинку окошка, может это что-нибудь прояснит.


Окно имее такой вид:
---------------------------
Windows Internet Explorer
---------------------------
Данные аутентификации не верны!
---------------------------
ОК
---------------------------

Если я пишу: Log.Message(Sys.Process('IEXPLORE').Window('#32770', 'Windows Internet Explorer', 1).Window('Static', '*', 1).WndCaption);
то в логе он мне ничего не пишет, т.е.:
Type Message Priority Time Has Picture Link
Скриншот окна Normal 10:26:32
Normal 10:26:32 <------ вот тут типа Log.Message
The 'Windows Internet Explorer' window was closed. Normal 10:26:33

Если я пишу: Log.Message(Sys.Process('IEXPLORE').Window('#32770', 'Windows Internet Explorer', 1).Window('*', '*', 1).WndCaption);
То ТС вчленяет слово "ОК"
  • 0

#10 julia.ap

julia.ap

    Новый участник

  • Members
  • Pip
  • 23 сообщений

Отправлено 11 декабря 2008 - 09:34

Здравствуйте.

Log.Message(Sys.Process('IEXPLORE').Window('#32770', 'Windows Internet Explorer', 1).Window('Static', '*', 3).WndCaption);
Этот скрипт берёт окно с заголовком 'Windows Internet Explorer' (а именно Sys.Process('IEXPLORE').Window('#32770', 'Windows Internet Explorer', 1)), и у его _дочернего_ объекта, который представляет собой текст окна (не заголовок, а именно текст внутри), берет этот самый текст через свойство WndCaption. При вызове метода Window('Static', '*', 3) второй параметр является '*', так как именно он и должен содержать интересующий нас текст, который в момент получения объекта нам неизвестен.

Я не знаю, как это может не работать. Пришлите картинку окошка, может это что-нибудь прояснит.


Получилось :) Индекс оказался не 1 и не 3, а вовсе 2 :) Спасибо за подсказку!
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных