測試回合: 使用Windows PowerShell實現UI自動化

來源:互聯網
上載者:User

儘管問世時間相對較短,但 Windows PowerShellTM 已經成為我最喜愛的工具之一。我最近發現,Windows PowerShell 擁有建立小型庫所需的全部功能,您可以使用這些功能編寫超輕型的 使用者介面自動化代碼。

在本月的專欄中,我將介紹如何建立一個小型的自訂 Windows PowerShell cmdlet 集合,以執行 Windows® 使用者介面自動化任務。其中包括獲得應用程式和控制項的控制代碼、操作控制項以及檢查應用程式狀態。在本次討論中,我將假設您對 Windows PowerShell 以及對使用 C# 語言的 Microsoft® .NET Framework P/Invoke 機制調用 Win32® API 函數都有基本的瞭解。不過,即使您剛開始接觸這些,稍微花點精力也能理解本專欄。

使用 Windows Powershell

對我而言,講解如何使用 Windows PowerShell 完成超輕型 使用者介面自動化的要點的最簡便方法是使用螢幕快照,如圖 1 所示。外殼程式中的前幾行輸出只是表示我使用的是 Windows PowerShell。接下來的幾行則表示正在註冊我的自訂 cmdlet;這是由一個自訂啟動指令碼完成的,每當啟動 Windows PowerShell 外殼的新執行個體時,就會運行此指令碼。(我的啟動指令碼還會將當前的工作目錄設定為 C:\UIautomationWithPowerShell。)在本例中,我編寫並註冊了八個自訂 cmdlet 來實現超輕型 使用者介面自動化:get-window、get-control、get-controlByIndex、send-chars、send-click、get-listBox、send-menu 和 get-textBox。

圖 1 使用 Windows PowerShell 實現 使用者介面自動化

然後,我發出以下命令來顯示目前的目錄中以字母“t”開頭的所有項目的名稱:

複製代碼

PS C:\UIautomationWithPowerShell> get-childitem t* | select-object Name | format-table -auto

在圖 1 中,輸出內容告訴我,我有一個名為 TheAppToTest 的目錄和一個名為 testScenario.ps1 的檔案。這個檔案是我的 Windows PowerShell 測試指令碼。

get-childitem 命令是大約 130 個內建 Windows PowerShell cmdlet 中的一個。其中的很多 cmdlet 也都有別名。例如,get-childitem cmdlet 就有幾個別名 — 它可以是“dir”(對於非常熟悉舊的 cmd.exe 命令外殼和 .bat 檔案的人)、“ls”(對於習慣 UNIX 環境的工程師)及“gci”(命令列中一種簡單方便的縮寫)。

我的命令將 get-childitem 的輸出用管道傳送到 select-object cmdlet,我使用後者將結果篩選為最終只有檔案和目錄名屬性。然後,我使用 -auto 開關將該結果用管道傳送到 format-table cmdlet,以產生一個緊縮的顯示。當然,我本可以只鍵入“get-childitem”(或它的別名之一),而不進行任何管道傳送以接受命令的所有預設參數。

我可以在命令列輸入命令 .\testScenario.ps1 來調用我的測試指令碼。請注意,與大多數指令碼語言不同,在 Windows PowerShell 中,即使指令碼位於當前的工作目錄中,仍需要使用一個相對路徑(像我做的那樣)或完整路徑來指定指令碼的路徑。這是為了安全起見。另外,預設情況下,Windows PowerShell 不允許執行指令碼,所以,如果想要運行指令碼,必須顯式啟動執行。您可以通過輸入命令“get-executionpolicy”來檢查當前的指令碼執行策略,並通過輸入帶有參數“remoteSigned”或“unrestricted”的“set-executionpolicy”來修改該策略。

設定好後,特定系統上的執行策略對 Windows PowerShell 外殼和使用者會話的所有新執行個體仍然有效。當我啟動一個新外殼時,我的啟動指令碼(只是一個普通的 Windows PowerShell 指令碼)實際上能夠執行這一事實表明,我當前的執行策略允許執行指令碼。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.