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

Фотография

TC не видит Пользовательскую область уведомлений

TestComplete Object MSAA Tray

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

#1 Сергей

Сергей

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

  • Members
  • PipPipPipPipPipPip
  • 1 245 сообщений
  • Город:Москва

Отправлено 17 октября 2014 - 09:30

Имеем: Windows 7 Pro + TC 9.31

 

Требуется: вызвать контекстное меню иконки в трее (клик правой кнопкой мыши по иконке, иконка всегда видима)

 

Вижу 3 варианта:

  1. RClick по координатам. Не совсем гуд. Не пользуюсь.
  2. Отыскать координаты самой пиктограммки в Shell_TrayWnd  и RCLick по ним. Вариант приемлим, но 3-й лучше.
  3. Включить в MSAA объект ToolbarWindow32. Тогда становятся доступны объекты и можно красиво добраться до интересующего объекта.

 

Так вот проблема именно с тем, что TC процентов 90 перестает видеть виндоуский трей. Помогает только ручной запуск Display Object Spy и наведение на трей мишени. После чего все работает.

 

Сейчас думаю перейти ко второму варианту с поиском пиктограмки. Вообще, MSAA иногда странно ведет себя.

 

Кто сталкивался с проблемой?

 

Спасибо.


  • 0

"Если ты хороший плотник и делаешь красивую тумбочку, ты не будешь прибивать сзади фанеру, даже несмотря на то, что задняя часть повернута к стене, и никто ее не видит. Ты будешь хорошо спать ночью, только если тебе удалось воплотить в своем произведении эстетическую красоту и качество." © Стив Джобс


#2 wret

wret

    Активный участник

  • Members
  • PipPip
  • 124 сообщений
  • Город:Москва

Отправлено 17 октября 2014 - 10:07

Только кликнуть правой кнопкой по иконке?

Пошаманьте с user32.dll FindWindow, PostMessage WM_RBUTTONXXX

 

Или потом выбрать что-то в меню?

Попробуйте выяснить айдишник контрола у разработчиков (или сами гляньте) и в PostMessage его


  • 0

#3 Сергей

Сергей

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

  • Members
  • PipPipPipPipPipPip
  • 1 245 сообщений
  • Город:Москва

Отправлено 17 октября 2014 - 10:15

Вызвать контекстное меню и кликнуть необходимый пункт меню.


  • 0

"Если ты хороший плотник и делаешь красивую тумбочку, ты не будешь прибивать сзади фанеру, даже несмотря на то, что задняя часть повернута к стене, и никто ее не видит. Ты будешь хорошо спать ночью, только если тебе удалось воплотить в своем произведении эстетическую красоту и качество." © Стив Джобс


#4 wret

wret

    Активный участник

  • Members
  • PipPip
  • 124 сообщений
  • Город:Москва

Отправлено 17 октября 2014 - 10:53

Ну да, WinAPI вам в помощь

Разобравшись в нем можно много стандартных кривоработающих методов переопределить


  • 0

#5 modbear

modbear

    Специалист

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

Отправлено 17 октября 2014 - 12:57

У тулбаров для работы с айтемами есть свойства и методы wButtonCount, ClickItem, ClickItemR и т.п.

Вы пробовали записать действия? У меня на Windows 7 right-click по иконке MS Outlook в трее записывается как .ClickItemR("Microsoft Outlook", false):

// JScript
function Test()
{
  Sys.Process("explorer").Window("Shell_TrayWnd").Window("TrayNotifyWnd").Window("SysPager").Window("ToolbarWindow32", "*").ClickItemR("Microsoft Outlook", false);
  Sys.Process("OUTLOOK").Window("Outlook Notification Area Icon Window").PopupMenu.Click("Open Outlook");
}

  • 0

#6 Сергей

Сергей

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

  • Members
  • PipPipPipPipPipPip
  • 1 245 сообщений
  • Город:Москва

Отправлено 17 октября 2014 - 13:16

Это у меня в п.3 сделано.


  • 0

"Если ты хороший плотник и делаешь красивую тумбочку, ты не будешь прибивать сзади фанеру, даже несмотря на то, что задняя часть повернута к стене, и никто ее не видит. Ты будешь хорошо спать ночью, только если тебе удалось воплотить в своем произведении эстетическую красоту и качество." © Стив Джобс


#7 modbear

modbear

    Специалист

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

Отправлено 17 октября 2014 - 13:52

ToolbarWindow32 - это обычный тулбар, у него есть ClickItemR и т.п. безо взяких MSAA. Я бы посоветовала выключить MSAA - вполне возможно, что проблемы как раз из-за этого.


  • 0

#8 Сергей

Сергей

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

  • Members
  • PipPipPipPipPipPip
  • 1 245 сообщений
  • Город:Москва

Отправлено 17 октября 2014 - 14:20

Все верно, ToolbarWindow32 - без MSAA это обычный тулбар без дочерних элементов (кстати, у вас он скорее включен со  '*'). Соответственно, то что внутри я не вижу, т.е. то что мне конкретно нужно. Можно туда попробовать поместить только одну иконку от тестируемого приложения и кликать по тулбару. Но это тоже, не гуд.

 

Поиск веду в направлении API. Хендл получил окна, вырубить приложение получилось (WM_DESTROY), а вот кликнуть правой кнопкой не получается просто постом или сендом (пробовал WM_CONTEXTMENU, WM_RBUTTONUP, WM_RBUTTONDOWN). Хм... буду копать, возможно что-то с передаваемыми параметрами или маус евент использовать...


  • 0

"Если ты хороший плотник и делаешь красивую тумбочку, ты не будешь прибивать сзади фанеру, даже несмотря на то, что задняя часть повернута к стене, и никто ее не видит. Ты будешь хорошо спать ночью, только если тебе удалось воплотить в своем произведении эстетическую красоту и качество." © Стив Джобс


#9 modbear

modbear

    Специалист

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

Отправлено 17 октября 2014 - 14:50

Мне кажется, мы немного недопонимаем друг друга. :)

Я про то, что обычный toolbar.ClickItemR может кликать кнопки в трее, используя тултип кнопок. Вас не устраивает такой способ?

toolbar.ClickItemR("Skype*");

toolbar.ClickItemR("ABBYY Lingvo*");

toolbar.ClickItemR("Microsoft Outlook");

Да, в Object Browser отдельных объектов для кнопок нет, у самого тулбара есть свойства и методы, чтобы кликать по кнопкам, получать картинки кнопок, текст кнопок и т.п.

MSAA для * у меня выключено.
Прикрепленный файл  tray-icon-properties.png   14,36К   0 Количество загрузок:


  • 0

#10 wret

wret

    Активный участник

  • Members
  • PipPip
  • 124 сообщений
  • Город:Москва

Отправлено 18 октября 2014 - 07:29

Все верно, ToolbarWindow32 - без MSAA это обычный тулбар без дочерних элементов (кстати, у вас он скорее включен со  '*'). Соответственно, то что внутри я не вижу, т.е. то что мне конкретно нужно. Можно туда попробовать поместить только одну иконку от тестируемого приложения и кликать по тулбару. Но это тоже, не гуд.

 

Поиск веду в направлении API. Хендл получил окна, вырубить приложение получилось (WM_DESTROY), а вот кликнуть правой кнопкой не получается просто постом или сендом (пробовал WM_CONTEXTMENU, WM_RBUTTONUP, WM_RBUTTONDOWN). Хм... буду копать, возможно что-то с передаваемыми параметрами или маус евент использовать...

Ну так код давайте

И что с идей спросить нужный айдишник контрола?


  • 0

#11 Сергей

Сергей

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

  • Members
  • PipPipPipPipPipPip
  • 1 245 сообщений
  • Город:Москва

Отправлено 20 октября 2014 - 07:21

Хм, у меня выглядит вот так OB:

 

Прикрепленный файл  toolbar.jpg   138,95К   0 Количество загрузок:


  • 0

"Если ты хороший плотник и делаешь красивую тумбочку, ты не будешь прибивать сзади фанеру, даже несмотря на то, что задняя часть повернута к стене, и никто ее не видит. Ты будешь хорошо спать ночью, только если тебе удалось воплотить в своем произведении эстетическую красоту и качество." © Стив Джобс


#12 Сергей

Сергей

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

  • Members
  • PipPipPipPipPipPip
  • 1 245 сообщений
  • Город:Москва

Отправлено 20 октября 2014 - 11:14

2modbear: спасибо за настойчивость. Сделал как Вы предложили. Проблема была в том, что я в свое время снял чек в настройках Object Mapping -> Win32Controls and Windows. Конкретно Toolbar.

 

2wret: Вам спасибо за наводку про Win32API. Но что-то у меня не срослось с  MAKELPARAM + TC + jscript в вызове Win32API.PostMessage. Видимо ограничения, описанные здесь


  • 1

"Если ты хороший плотник и делаешь красивую тумбочку, ты не будешь прибивать сзади фанеру, даже несмотря на то, что задняя часть повернута к стене, и никто ее не видит. Ты будешь хорошо спать ночью, только если тебе удалось воплотить в своем произведении эстетическую красоту и качество." © Стив Джобс




Темы с аналогичным тегами TestComplete, Object, MSAA, Tray

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

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