Я пытаюсь автоматизировать выбор меню с помощью Microsoft UI Automation.UIAutomation - Strange ExpandCollapse Behavior
Приложение, для которого я настроен, является приложением Windows, которое включает встроенный браузер. Приложение имеет панель меню с элементами меню «Файл», «Редактировать» и т. Д.
Машина, на которой я запускаю автоматизацию, является машиной Windows XP.
Вот код, я использую, чтобы развернуть пункт меню Файл:
AutomationElement aeMenuBar =
aeFormElement.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.MenuBar));
AutomationElement aeFileItem =
aeMenuBar.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.NameProperty, "File"));
ExpandCollapsePattern fileECPattern = aeFileItem.GetCurrentPattern(ExpandCollapsePattern.Pattern) as ExpandCollapsePattern;
fileECPattern.Expand();
я получаю InvalidOperationException, когда я ударил метод Expand().
Я не могу понять, что вызывает исключение. ExpandCollapseState fileECPattern Collapsed, который, я считаю, верен (другими словами, это не LeafNode).
Одна вещь, которую я замечаю, является некоторым аномальным поведением в целевом приложении, когда я просматриваю его с помощью UI Spy. В частности, если в UI Spy я выбираю пункт меню File, «Scope to Element», затем запускает метод Expand, меню File не расширяется. Вместо этого появляется пункт меню next в Файл (т. Е. Редактировать). Такое же поведение происходит и с другими пунктами меню. Это не происходит, когда я меняю приложения (например, Microsoft Paint) - там все работает нормально.
На каком-то базовом уровне элементы меню в моем целевом приложении просто не кажутся хорошо воспроизводимыми с помощью UI Automation и UI Spy.
Любые предложения относительно того, почему бы и нет было бы весьма полезно.
Спасибо за информативный ответ. Я сделаю снимок в подходе Invoke. Я несколько опасаюсь полагаться на положение мыши, так как я предполагаю, что это повлияет на конкретный монитор, который использует пользователь. – Steve