指定窗口
根据条件定位指定的窗口。
命令选项
查找方式 可以使用下面三种方式查找:
- 根据窗口的属性查找窗口, 窗口属性是指窗口的标题,类别名,还有窗口值。
- 最前窗口, 得到当前桌面上正在接受键盘输入的窗口,也称为当前活动窗口。
- 最前窗口的下一个窗口, 得到当前活动窗口背后的哪个窗口。
- 根据窗口路径查找窗口。
根据窗口标题 指定目标窗口的标题。
根据窗口类别名 指定目标窗口的类别名。
完全匹配 指定标题或是类别名是否需要完全匹配,否则只要发现某个窗口的标题/类别名包含指定的内容则认为
根据窗口值 指定具体的窗口值,窗口值是由操作系统为每个窗口分配的一个数字,这个数字不是固定的,每次窗口打开都会变化。
允许处理隐藏窗口 指定在查找窗口的时候是否跳过哪些没有显示出来的窗口。
窗口路径使用方法
窗口路径遵循xpath规范,是一种功能强大的窗口查找方式,允许按窗口的层次关系和过滤条件来定位某一个的窗口。窗口的层次关系是指窗口之间的包含关系,在Windows操作系统中,一个应用程序通常有一个主窗口,按钮,文本框或是工具条之类的界面元素通常是以子窗口的形式放在主窗口中,子窗口中还可以有子窗口。路径查找方式就是通过指定层次关系来定位窗口,语法如下:
/窗口类别名1[过滤条件表达式][索引号] /窗口类别名2[过滤条件表达式][索引号]..
每一个结点必须以左括号开始,右括号结束。
- 过滤条件表达式 是可选的,如果有,必须以方括号括起来,并且在窗口类别名后面。表达式语法及运算符请参见如何使用变量和表达式。注意:窗口过滤表达式中是不能直接使用变量的,具体请参见下面的例子。过滤表达式中可以使用的属性请参见后面。
- 索引号 也是可选的,如果有用括号引起来放在后面,用于指定满足条件的第几个窗口(注:窗口的顺序号是由它在父窗口中的前后顺序决定的),当有多个窗口会满足条件的情况下有用。默认情况下,索引号是从1开始的,1表示第一个,2表示第二个,依次类似。
例一:
/Notepad
只有一个结点的窗口路径,不带过滤条件和索引号。表示第一个记事本窗口(记事本窗口的类别名是Notepad)。
例二:
/Notepad[title ^= '未命名' and screenarea='0,0,500,500' and haschild=TRUE][3]
带有条件过滤表达式和索引号的单结点窗口路径。表示记事本窗口(记事本窗口的类别名是Notepad),并且标题(title)必须是以"未命名"开头,并且窗口需要在屏幕区域(screenarea)0,0, 500,500区域以内,并且这个窗口必须要带有子窗口(haschild)。索引号是3,表示满足条件的第3个窗口。
例三:
/Notepad[title ^= %v_窗口标题%][3]
带有条件过滤表达式和索引号的单结点窗口路径。但以变量 v_窗口标题 来表达窗口的标题,而不是指定具体的值。在条件过滤表达式中,不允许直接使用变量,如: /Notepad[title ^= v_窗口标题][3],将不被正确执行并报错。
例四:
/#32770[title = '字体']/ComboBox[title = '常规']/ComboBox
带有条件表达式的多结点窗口路径,表示字体窗口下的一个子窗口。其中第一个结点中,字体窗口的类别名是#32770,并且标题(title)的是"字体"。第二个结点是下拉列表框,标题(对于下拉列表框就是显示内容)必须是"常规"。
例五:
/#32770[title = '字体']//ComboBox
使用了//,表示字体窗口下的所有ComboBox。使用//表示不关心中间有多少级别。如下面完全路径指定的ComboBox都将被这个表达式选中。
/#32770[title = '字体']/ComboBox[title = '常规']/ComboBox
/#32770[title = '字体']/ComboBox
窗口路径中过滤表达式支持的窗口属性
在窗口过滤条件表达式中,可以使用的窗口属性如下:
属性名称 | 说明 | 数据类型 |
---|---|---|
title | 窗口的标题,对于文本输入框,则是文本框里面的内容。 | 文本 |
class | 窗口的类别名。 | 文本 |
visible | 窗口是否显示。 | 逻辑值 |
enabled | 窗口是否允许。 | 逻辑值 |
zoomed | 窗口是否最大化显示。 | 逻辑值 |
iconic | 窗口是否最小化。 | 逻辑值 |
inarea | 窗口是否在父窗口的某一个区域内。语法格式:inarea="左坐标,上坐标,区域宽度,区域高度",如:inarea="10,10,400,300"。 | 文本 |
screenarea | 窗口是否在屏幕的某个区域内。语法格式:screenarea="左坐标,上坐标,区域宽度,区域高度",如:inarea="10,10,400,300"。 | 文本 |
haschild | 窗口是否有子窗口。 | 逻辑值 |
checked | 窗口是否被选中,仅适用于复选框和单选按钮。 | 逻辑值 |
left | 窗口在父窗口中的左坐标。 | 数字 |
top | 窗口在父窗口中的上坐标。 | 数字 |
right | 窗口在父窗口中的右坐标。 | 数字 |
bottom | 窗口在父窗口中的下坐标。 | 数字 |
sleft | 窗口在屏幕中的左坐标。 | 数字 |
stop | 窗口在屏幕中的上坐标。 | 数字 |
sright | 窗口在屏幕中的右坐标。 | 数字 |
sbottom | 窗口在屏幕中的下坐标。 | 数字 |
width | 窗口的宽度。 | 数字 |
height | 窗口的高度。 | 数字 |