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

Фотография

Нужно кликнуть по иконке в окне приложения


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

#1 mskffo

mskffo

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

  • Members
  • Pip
  • 63 сообщений
  • ФИО:Мария
  • Город:Москва

Отправлено 15 февраля 2012 - 12:02

В окне приложения имеется панель инструментов. Интерфейс нестандартный, вследствие чего ТС не видит отдельных иконок на этой панели. А задача состоит в том, чтобы нажать на определенную иконку в панели инструментов.
Выход из данной ситуации мне представляется таким: найти в окне приложения эту панель инструментов (или ее изображение), попытаться найти на ней изображение нужной иконки и, если она найдена, сэмулировать клик левой кнопки мыши.
Использую Regions для сохранения изображения нужной иконки (в MSPaint вырезала изображение из скрина окна).
Панель инструментов можно получить примерно так:
Regions.AddPicture(Window("V8FormElement", "", 11), "Fil")

А вот как найти одну картинку на другой и тем более кликнуть на нее - большой вопрос.

Коллеги, есть идеи?

P.S. Искать одну картинку в другой методом Find объекта Picture, как описано тут http://tctutorial.ru/images не получилось, поскольку, повторюсь, ТС не видит иконки на панели как отдельные объекты
  • 0

#2 Zenturio

Zenturio

    Опытный участник

  • Members
  • PipPipPipPip
  • 386 сообщений
  • ФИО:Дмитрий
  • Город:Смоленск - Москва


Отправлено 15 февраля 2012 - 12:22

Расчитывай координаты каждой иконки и кликай по координатам панели.
  • 0

#3 mskffo

mskffo

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

  • Members
  • Pip
  • 63 сообщений
  • ФИО:Мария
  • Город:Москва

Отправлено 15 февраля 2012 - 12:29

Расчитывай координаты каждой иконки и кликай по координатам панели.

Актуально, если такое действие выполняется один раз...у меня же одинаковые иконки присутствуют во многих окнах приложения, но координаты у них явно будут отличаться..
  • 0

#4 XXX

XXX

    Опытный участник

  • Members
  • PipPipPipPip
  • 284 сообщений
  • ФИО:Денис Викторович
  • Город:Санкт-Петербург


Отправлено 15 февраля 2012 - 12:40

может есть метод ClickItem(i) для тулбара ? указываешь в параметре индекс икнопки в тулбаре и происходит клик по ней...
или можно достучаться через items.Items(i)... ?
  • 0

#5 modbear

modbear

    Специалист

  • Members
  • PipPipPipPipPip
  • 548 сообщений

Отправлено 15 февраля 2012 - 12:43

В вашем случае как раз и надо использовать Regions.Find. Вам надо искать иконку кнопки (которую вы вырезали в Paint'е) на скриншоте тулбара. Так вы получите координаты кнопки на тулбаре.

Примерно это будет выглядеть так:
//JScript
toolbar = ....Window("V8FormElement", "", 11);
rect = Regions.Find(toolbar, "button"); // button - это имя иконки кнопки в Regions
if (rect != null) {
   // Иконка кнопки найдена; определяем координаты для клика
  x = rect.Left + rect.Width/2;
  y = rect.Top + rect.Heigth/2;
  toolbar.Click(x, y);
}
else {
   // Иконка кнопки не найдена
}

  • 0

#6 Genka

Genka

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

  • Members
  • PipPipPipPipPipPip
  • 1 328 сообщений
  • ФИО:Геннадий Алпаев
  • Город:Украина, Днепр


Отправлено 15 февраля 2012 - 21:49

к ответу modbear хочу лишь добавить, что скриншот, сделанный в MS Paint может отличаться от того, который делает TestComplete, поэтому при работе с регионами нужно сначала сделать (с помощью тесткомплит!) скриншот той области, на которой вам нужно кликать, а потом искать эту область на тулбаре.

Но вообще я довольно яростный противник использования скриншотов в большинстве случаев, а потому советую сделать просто, тупо, но эффективно.
Пишете функцию clickToolbarButton(name), в которую передаете текст кнопки (или что угодно, короче, какой-то идентификатор). В самой функции пишете что-то вроде

switch(name):
case "Button1":
toolbar.click(10, 10)

case "Button2":
toolbar.click(30, 10)

И т.д. В результате в случае добавления кнопки в середине тулбара, вам придется внести изменения только в одну функцию.

Конечно, ситуация хуже, если у вас динамический тулбар (как, например, в Office 2007), но и тут все решается (использованием 2х параметров вместо одного).
  • 0

TestComplete для начинающих (видеозаписи курса)

Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)

Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest


#7 XXX

XXX

    Опытный участник

  • Members
  • PipPipPipPip
  • 284 сообщений
  • ФИО:Денис Викторович
  • Город:Санкт-Петербург


Отправлено 16 февраля 2012 - 07:02

+ изображения кнопки могут отличаться в разных ОС, при разных оформлениях,разрешениях экрана...вобщем много всего!)
например, както у меня была ситуация когда скрипты нужно было гонять на других машинах где почти все объекты выглядели чуток по другому..ну и соответственно везде где использовались скрины - ничего не работало..поэтому я от них решил отказаться навсегда )
  • 0


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

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