我有一個應用程序,可以在任意Windows應用程序上執行一些自動操作。我一直在使用記事本來測試它。UIAutomation和遠程桌面連接
在這個自動化過程中,我必須從代碼中調用事件。我目前支持兩種類型的事件,因爲它們似乎是最常見的,InvokePattern和ExpandCollapsePattern。
我用一臺可以遠程桌面進入的計算機來做測試。但這很奇怪。當我通過遠程桌面連接到計算機時,該應用程序正常工作。當我從電腦斷開連接時,我的代碼停止工作在ExpandCollapsePattern(InvokePattern工作正常)。我得到一個InvalidOperationException。
該文檔說,只有當節點被標記爲LeafNode時才應該拋出這個問題。是什麼讓遠程桌面不同,我得到InvalidOperationException?
這是我目前必須執行的事件的代碼。
ExpandCollapseState state =
patternMenu.Current.ExpandCollapseState;
if (state == ExpandCollapseState.Expanded)
patternMenu.Collapse();
else if (state == ExpandCollapseState.PartiallyExpanded ||
state == ExpandCollapseState.Collapsed)
patternMenu.Expand();
patternMenu是使用GetCurrentPattern從AutomationElement獲取的ExpandCollapsePattern。
當我打印出該值時,ExpandCollapseState的當前值爲「Collapsed」。
編輯:任何機會,我可以知道爲什麼我得到了downvote,以及這是一個壞的問題?我真的對發生的事情感到困惑,因爲它只在遠程桌面關閉時似乎失敗。如果這是一個非常愚蠢的問題,我應該知道答案,我會喜歡解釋,然後downvote。
與桌面交互的過程不是Windows服務。這是我在遠程桌面進入電腦後開始的一個應用程序。是因爲我鎖定了桌面嗎?
我在Ubuntu上使用「終端服務器客戶端」登錄Windows機器。按下此應用程序上的關閉按鈕是否會導致桌面鎖定?
我認爲當桌面鎖定自己時它運行良好, 但是我錯了。一旦桌面自動鎖定,最新的測試結果就開始失敗。我將開始設置虛擬機來運行測試,而不是使用遠程桌面。謝謝。 – 2011-03-29 02:12:18