簡體   English   中英

UIAutomation和遠程桌面連接

[英]UIAutomation and Remote Desktop Connections

我有一個應用程序在任意Windows應用程序上執行一些自動化。 我一直在使用記事本來測試它。

在這種自動化過程中,我必須從代​​碼中調用事件。 我目前支持兩種類型的事件,因為它們似乎是最常見的InvokePatternExpandCollapsePattern

我使用可以遠程桌面進入測試的計算機。 但這很奇怪。 當我通過遠程桌面連接到計算機時,應用程序正常工作。 當我從計算機斷開連接時,我的代碼停止為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機器。 按此應用程序上的關閉按鈕會導致桌面鎖定嗎?

一般來說,您通常無法在非交互式桌面上運行UI Automation或類似工具。 非交互式桌面在輸入方面有各種限制:沒有聚焦元素,無法發送輸入,因此依賴於這些內容的任何內容都將失敗。

某些功能(如發送Windows消息)可以正常工作。 這里可能發生的是InvokePattern功能作為消息在封面下實現,因此仍然有效; 但是擴展/折疊可能會根據輸入實現,這會失敗。

不清楚為什么,在您的情況下,當您關閉客戶端(該部分是預期的)時它會失敗,但是當遠程桌面鎖定自身時似乎工作 - 它會在兩種情況下都表現出相同的行為。

(請注意,如果本地 Ubuntu桌面鎖定,只要客戶端仍在運行,一切都應該沒問題。在這種情況下,遠程客戶端仍然是“交互式的”,因為它有一個連接到它的實時客戶端,無論客戶端本身是在交互式還是非交互式桌面上運行 - 這些概念甚至可能不適用於在另一個操作系統上運行的客戶端!)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM