UI自動化關閉遠程桌面連接,鼠標鍵盤失效的解決方案


一、初識鼠標鍵盤失效問題

當用戶在一段時間內沒有對Windows進行任何操作,Windwos會自動切換到鎖屏模式(或屏保模式),甚至待機。
對於普通用戶來說,這樣設置沒問題,而且這也是官方推薦的設置。但如果這台電腦是IT開發人員用來進行自動化測試的機器,尤其是包含UI交互的測試(比如,用腳本操控鼠標來模擬點擊一個按鈕),這樣設置就是錯誤的,因為退出桌面后,鼠標鍵盤會失效,UI自動化無法正常進行。
解決這一問題思路很簡單:保持計算機一直在桌面上。
具體實施的方法如下:設置Windows的電源模式,讓Windows不要自動鎖屏和待機,同時去掉屏保。

二、問題進階


UI自動化測試期間,執行測試的電腦幾乎不能被其他人使用(因為鼠標、鍵盤等輸入設備此時需要響應自動化測試腳本)。
為了不影響工作我們通常會搭一台虛擬機,然后遠程連接到虛擬機,在虛擬機里進行UI自動化測試。
這種方式很常用,但存在一個問題:如果我們在測試過程中將遠程桌面最小化或關閉遠程桌面,那測試也會因為鼠標鍵盤失效而中斷。

三、問題成因


最小化會讓遠程桌面的會話切換到無圖形界面的模式,這自然就無法繼續接收鼠標、鍵盤的指令。
關閉遠程桌面會讓系統切換到登錄Desktop的界面,而在登錄Desktop的界面上沒有我們打開的其他窗口,因此會導致UI自動化測試失敗。

四、初級解決方案

1、遠程連接上虛擬機,永不關閉,永不最小化
2、如果遠程連接的機器是物理機的話,直接打開物理機,啟動測試,關閉屏幕。注意:不要遠程登錄本機器,否則參考方法1

五、遠程桌面最小化中斷測試的解決辦法(注:從機器A通過遠程桌面連接機器B,則需要在機器A上修改注冊表)

1、運行regedit
2、找到注冊表項HKEY_CURRENT_USER\Software\Microsoft\TerminalServer Client
3、新建一個類型為DWORD的注冊表項RemoteDesktop_SuppressWhenMinimized並設置值為2
4、然后找到注冊表項HKEY_CURRENT_USER\Software\Wow6432Node\Microsoft\TerminalServer Client
5、新建一個類型為DWORD的注冊表項RemoteDesktop_SuppressWhenMinimized並設置值為2
6、關閉注冊表編輯窗口並重啟計算機

注意:上述配置僅對當前用戶生效,如果你想讓新增的注冊表項應用於所有用戶的話,則需要在HKEY_LOCAL_MACHINE下新建對應的注冊表項。

六、關閉遠程桌面中斷測試的解決辦法1


1、我們之前通過點擊x圖標來關閉遠程桌面會導致鼠標鍵盤失效,本方法的解題思路是用命令關閉遠程桌面,同時保留連接。
2、在遠程桌面(被連接的電腦)中先執行 query session 來查看當前登錄到的 session,(遠程桌面的 sessionName 都以 rdp-tcp 開頭)。
3、以管理員身份打開命令行工具,並執行 "tscon rdp-tcp#71 /dest:console",其中 rdp-tcp#71 為SessionName,我們可以把rdp-tcp#71替換為對應的ID。
4、該命令會關閉遠程桌面的連接,然后把連接返回給遠程的那台電腦(繞開登錄過程)。
5、這里的 console 也是一個 SessionName,而這個名字的意思並非是 C# 中 “控制台” 的意思,而是指帶有輸入輸出設備的機器,一般直接登錄電腦的會話就是 console。

 

七、關閉遠程桌面中斷測試的解決辦法2


1、每次都打開cmd執行命令太麻煩了,我們可以把命令封裝成bat文件,當需要關閉遠程桌面並保留連接時以管理員身份執行即可。
2、新建文本文件,將其重命名為Close_RDP.bat
3、將下邊六行代碼拷貝進去
@%windir%\System32\tscon.exe 0 /dest:console
@%windir%\System32\tscon.exe 1 /dest:console
@%windir%\System32\tscon.exe 2 /dest:console
@%windir%\System32\tscon.exe 3 /dest:console
@%windir%\System32\tscon.exe 4 /dest:console
@%windir%\System32\tscon.exe 5 /dest:console

當多個用戶登錄同一台計算機時,就會出現 Session ID 大於1的情況,比如遠程桌面。
.bat文件中有六行命令,在本例中實際起作用的是ID=4的那一條,由於你不能確定自己是第幾個登錄到遠程桌面的,也就無法確定自己的SessionID,
本例僅處理了0~5的SessionID,如果你進行遠程連接時被分配的SessionID是6,那腳本就對你無效了,自己稍加修改即可。

八、關閉遠程桌面中斷測試的解決辦法3

假設用於進行UI自動化測試的機器是虛擬機B,現在使用另一台虛擬機A作為中轉。

1、本機先連接虛擬機A
2、然后再從虛擬機A連接到虛擬機B
3、最后斷開本機與虛擬機A的連接

 

如果文章對您有幫助,請點贊、評論支持一下,謝謝!
————————————————
版權聲明:本文為CSDN博主「changuncle」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/xiaouncle/article/details/103035537


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM