尽管问世时间相对较短,但 Windows PowerShellTM 已经成为我最喜爱的工具之一。我最近发现,Windows PowerShell 拥有创建小型库所需的全部功能,您可以使用这些功能编写超轻型的 UI 自动化代码。
在本月的专栏中,我将介绍如何创建一个小型的自定义 Windows PowerShell cmdlet 集合,以执行 Windows UI 自动化任务。其中包括获得应用程序和控件的句柄、操作控件以及检查应用程序状态。在本次讨论中,我将假设您对 Windows PowerShell 以及对使用 C# 语言的 Microsoft .NET Framework P/Invoke 机制调用 Win32 API 函数都有基本的了解。不过,即使您刚开始接触这些,稍微花点精力也能理解本专栏。
使用 Windows Powershell
对我而言,讲解如何使用 Windows PowerShell 完成超轻型 UI 自动化的要点的最简便方法是使用屏幕快照,如图 1 所示。外壳程序中的前几行输出只是表示我使用的是 Windows PowerShell。接下来的几行则表示正在注册我的自定义 cmdlet;这是由一个自定义启动脚本完成的,每当启动 Windows PowerShell 外壳的新实例时,就会运行此脚本。(我的启动脚本还会将当前的工作目录设置为 C:\UIautomationWithPowerShell。)在本例中,我编写并注册了八个自定义 cmdlet 来实现超轻型 UI 自动化:get-window、get-control、get-controlByIndex、send-chars、send-click、get-listBox、send-menu 和 get-textBox。
图 1 使用 Windows PowerShell 实现 UI 自动化
然后,我发出以下命令来显示当前目录中以字母“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 脚本)实际上能够执行这一事实表明,我当前的执行策略允许执行脚本。
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索windows
, 脚本
, 命令
, powershell
, windows脚本
, windows 脚本
, 一个
, Powershell脚本
, 调用PowerShell
, PowerShell管道
, Get-ChildItem命令
, Get-ChildItem
cmdlets
windows ui自动化测试、powershell 自动化、windows powershell、windows10 powershell、windowspowershell2.0,以便于您获取更多的相关知识。