搜索控件

搜索并返回应用程序中控件的实例。

描述

返回控件的实例。 控件的实例可用于在其他命令中引用相同的 UI 元素,从而无需在每个命令中单独引用该元素。

搜索 UI 元素的一种方法是通过选择器。 IBM Robotic Process Automation 使用选择器将窗口附加到自动化上下文以与窗口的内部控件进行交互。 您可以在 控件和选择器概述上找到有关选择器的更多信息。

另一种搜索 UI 元素的方法是通过 Index path 参数使用 MSAA 技术。 Index path 基于 Microsoft Active Accessibility (MSAA) 技术。 您可以使用它来引用 MSAA 生成的控件树。

重要信息:您必须使用一个或多个选择器或 MSAA 技术来搜索控件,否则该命令将失败。

有关控件的更多深入信息,请参阅 Window Automation 部分。

脚本语法

IBM RPA 的专有脚本语言的语法与其他编程语言类似。 该脚本语法在脚本文件中定义命令的语法。 您可以在 IBM RPA Studio的 脚本 方式下使用此语法。

searchControl [--window(String)] [--indexedpath(String)] [--id(String)] [--name(String)] [--innertext(String)] [--elementvalue(String)] [--classname(String)] [--controltype(String)] [--index(Numeric)] [--width(Numeric)] [--height(Numeric)] [--timeout(TimeSpan)] (Boolean)=success (Control)=value

输入参数

下表显示了此命令中提供的输入参数的列表。 在表中,您可以看到在 IBM RPA Studio的脚本方式及其 Designer 方式等效标签中工作时的参数名称。

设计器方式标签 脚本方式名称 必需的 接受的变量类型 描述
窗口 window Optional Text, Window 窗口的标题或窗口变量。 如果该字段留空,那么该命令将搜索与上下文相关的最接近的窗口。
索引路径 indexedpath Optional Text 控件的索引路径。 树节点的路径用逗号分隔,并且每个索引对应一个元素。

例如,如果索引路径为 1, 2,那么它将在父树节点中搜索第一个元素,并在子树节点中搜索第二个元素。 如果找到该元素,那么该命令将验证所使用的任何其他选择器。 否则,它将使用 UIAutomation 技术而不是 MSAA。

此参数还接受负值。 如果输入的值为 -1 ,那么将访存树的最后一个元素。

有关更多信息,请参阅 Search Control 命令启用 MSAA 支持
标识 id Optional Text 应查找的控件的标识。
名称 name Optional Text 应查找的控件的名称。
文本 innertext Optional Text 应查找的控件的内部文本。
元素值 elementvalue Optional Text 应查找的控件的元素值。
classname Optional Text 应查找的控件的类。
类型 controltype Optional Text 应查找的控件的类型。
索引 index Optional Number 应查找的控件的索引。
控件宽度 width Optional Number 应查找的控件的准确宽度。

记录器无法获取此参数,您必须使用外部工具才能获取此参数。
控件高度 height Optional Number 应查找的控件的高度。

记录器无法获取此参数,您必须使用外部工具才能获取此参数。
Timeout timeout Optional Time Span, Number, Text 执行命令的最长时间限制。

如果未定义任何值,那么执行将使用 Set Timeout (setTimeout) 命令定义的上下文超时。 如果脚本中未使用该命令,那么缺省超时为 5 秒。
重要信息: IdNameTextElement ValueClassTypeIndexControl WidthControl Height 参数使用 AND 逻辑与 MSAA Index path 参数始终是要求值的第一个参数进行求值。

输出参数

设计器方式标签 脚本方式名称 接受的变量类型 描述
成功 success Boolean 如果找到控件,那么返回 True 。 否则,返回 False
控制 value Control 返回控件的实例。

示例

示例 1: 启动记事本实例并将其附加到变量。 两个使用记录仪获得的选择器,以便获得控制。 成功获取控件后,文本文件将保存在桌面上。

defVar --name controlInstance --type Control
defVar --name successSearch --type Boolean
defVar --name desktopPath --type String
defVar --name successSave --type Boolean
defVar --name window --type Window
defVar --name processID --type Numeric
// Gets the desktop path.
getSpecialFolder --folder "Desktop" desktopPath=value
// Launches the Notepad application and attaches it to a variable.
launchWindow --executablepath "C:\\Program Files\\Notepad++\\notepad++.exe" --safesearch  window=value processID=processId
// Searches for the control based on selectors. In this case, Name and className.
searchControl --window "${window}" --name Save --classname TextBlock --timeout "01:01:00" successSearch=success controlInstance=value
// Checks if the control was successfully found.
if --left "${successSearch}" --operator "Is_True"
	click --selector "Instance" --control ${controlInstance}
endIf
// Saves the file in the desktop.
handleSaveFileDialog --filepath "${desktopPath}\\Example.txt" successSave=success

示例 2: 启动 Microsoft™ Outlook 应用程序的实例并将其附加到变量。 通过使用 MSAA 技术,将根据 新建电子邮件 按钮在应用程序控制树中的位置获取该按钮的 索引路径 参数。 在这种情况下,索引路径为 2,2,1 ,因为该按钮位于菜单栏和应用程序下。 它是菜单栏中的第二个选项,然后是功能区菜单中的第一个选项。 之后, 单击 (click ) 命令将单击该按钮,打开 " 新建电子邮件 " 窗口。

defVar --name window --type Window
defVar --name processID --type Numeric
defVar --name searchSuccess --type Boolean
defVar --name controlInstance --type Control
// Launches the Outlook application and attaches it to a variable.
launchWindow --executablepath "C:\\Program Files\\Microsoft Office\\root\\Office16\\OUTLOOK.EXE" --safesearch  window=value processID=processId
// Searches for the control based on the index path..
searchControl --window "${window}" --id "3,2,1" searchSuccess=success controlInstance=value
// Clicks on the element relative to the index path.
click --selector "Instance" --control ${controlInstance}