
Нужно кликнуть по иконке в окне приложения
#1
Отправлено 15 февраля 2012 - 12:02
Выход из данной ситуации мне представляется таким: найти в окне приложения эту панель инструментов (или ее изображение), попытаться найти на ней изображение нужной иконки и, если она найдена, сэмулировать клик левой кнопки мыши.
Использую Regions для сохранения изображения нужной иконки (в MSPaint вырезала изображение из скрина окна).
Панель инструментов можно получить примерно так:
Regions.AddPicture(Window("V8FormElement", "", 11), "Fil")
А вот как найти одну картинку на другой и тем более кликнуть на нее - большой вопрос.
Коллеги, есть идеи?
P.S. Искать одну картинку в другой методом Find объекта Picture, как описано тут http://tctutorial.ru/images не получилось, поскольку, повторюсь, ТС не видит иконки на панели как отдельные объекты
#2
Отправлено 15 февраля 2012 - 12:22
#3
Отправлено 15 февраля 2012 - 12:29
Актуально, если такое действие выполняется один раз...у меня же одинаковые иконки присутствуют во многих окнах приложения, но координаты у них явно будут отличаться..Расчитывай координаты каждой иконки и кликай по координатам панели.
#4
Отправлено 15 февраля 2012 - 12:40
или можно достучаться через items.Items(i)... ?
#5
Отправлено 15 февраля 2012 - 12:43
Примерно это будет выглядеть так:
//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 { // Иконка кнопки не найдена }
#6
Отправлено 15 февраля 2012 - 21:49
Но вообще я довольно яростный противник использования скриншотов в большинстве случаев, а потому советую сделать просто, тупо, но эффективно.
Пишете функцию clickToolbarButton(name), в которую передаете текст кнопки (или что угодно, короче, какой-то идентификатор). В самой функции пишете что-то вроде
switch(name):
case "Button1":
toolbar.click(10, 10)
case "Button2":
toolbar.click(30, 10)
И т.д. В результате в случае добавления кнопки в середине тулбара, вам придется внести изменения только в одну функцию.
Конечно, ситуация хуже, если у вас динамический тулбар (как, например, в Office 2007), но и тут все решается (использованием 2х параметров вместо одного).
TestComplete для начинающих (видеозаписи курса)
Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)
Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest
#7
Отправлено 16 февраля 2012 - 07:02
например, както у меня была ситуация когда скрипты нужно было гонять на других машинах где почти все объекты выглядели чуток по другому..ну и соответственно везде где использовались скрины - ничего не работало..поэтому я от них решил отказаться навсегда )
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных