我想使用Microsoft UI自動化菜單選擇自動化。UIAutomation - 奇怪的ExpandCollapse行爲
我所針對的應用程序是一個包含嵌入式瀏覽器的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當我打的展開()方法。
我無法弄清楚是什麼導致異常。 fileECPattern的ExpandCollapseState是Collapsed,我相信它是正確的(換句話說,它不是一個LeafNode)。
我注意到的一件事是當我使用UI Spy查看它時,目標應用程序中的一些異常行爲。特別是,如果在UI Spy中選擇文件菜單項「範圍到元素」,然後運行Expand方法,則文件菜單不會展開。相反,文件(即編輯)的菜單項下一個展開。其他菜單項也會發生相同的行爲。當我更改應用程序時(例如Microsoft Paint),並不會發生這種情況 - 一切看起來都很好。
在某些基本級別上,我的目標應用程序中的菜單項目似乎沒有很好地與UI自動化和UI間諜相配合。
任何建議,爲什麼不會不勝感激。
感謝您的回覆。我會在Invoke方法上採取一些措施。我有點擔心依靠鼠標位置,因爲我認爲這將受到個人正在使用的特定監視器的影響。 – Steve 2012-02-17 12:26:54