[英]UIAutomation — Strange ExpandCollapse Behavior
我正在尝试使用Microsoft UI自动化来自动执行菜单选择。
我所针对的应用程序是一个包含嵌入式浏览器的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();
当我点击Expand()方法时,我得到一个InvalidOperationException。
我不知道是什么导致异常。 fileECPattern的ExpandCollapseState为Collapsed,我认为这是正确的(换句话说,它不是LeafNode)。
我确实注意到的一件事是,当我使用UI Spy查看目标应用程序时,该应用程序存在异常行为。 特别是,如果在UI Spy中选择“文件”菜单项“范围到元素”,然后运行Expand方法,则“文件”菜单不会展开。 而是,文件(即,编辑) 旁边的菜单项会展开。 其他菜单项也会发生相同的现象。 当我更改应用程序(例如Microsoft Paint)时,它不会发生-一切似乎都可以正常工作。
在某些基本级别上,我的目标应用程序中的菜单项似乎与UI Automation和UI Spy的配合不佳。
关于为什么不的任何建议将不胜感激。
某些应用程序中的菜单栏比较棘手; 它们通常实际上只是“ toolbarwindow32”工具栏常用控件,在该控件中,应用程序将在按下菜单项时调用TrackPopupMenu来显示子菜单-下拉菜单和菜单栏之间实际上没有实际链接,只有一两行应用内的代码。 UIAutomation尽最大努力使它知道的菜单(例如,您在Win7记事本中找到的User32类型)展开/折叠工作,但并不总是在其他地方工作。
您可以尝试使用后备功能:查看Invoke是否可以使子菜单出现; 否则,请尝试获得可点击的点,然后在该位置单击鼠标(使用SendInput)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.