绝对坐标和相对坐标
绝对坐标也叫作桌面坐标。 在CukeTest的桌面自动化中,存在两种坐标表示,分别称为绝对坐标和相对坐标。
对于自动化,坐标计量通常采用以下原则:
- 基本度量单位为实际像素,因此只受分辨率而不受缩放比例影响。
- 水平
x
坐标从左向右增加; - 垂直
y
坐标从上到下增加; - 原点
(0,0)
取决于所使用的坐标类型(绝对/相对)。绝对坐标原点一般为主屏幕左上角顶点;相对坐标原点为当前控件(有时是父控件)左上角顶点。
Rect对象
为了能够描述控件的位置和大小信息,我们引入了Rect
对象,对象的属性由左上角坐标、宽度和高度组成。如下:
- x:
number
类型,相对坐标的水平像素; - y:
number
类型,相对坐标的垂直像素; - width:
number
类型,水平宽度,单位为像素; - height:
number
类型,垂直高度,单位为像素;
小知识:在Windows系统中还存在另外一种描述坐标的对象RECT 结构 (windef.h),同样是由四个值来描述控件位置和大小信息,但是宽度和高度改成了右下角坐标,即通过左上角和右下角两个点的坐标信息来描述控件位置大小情况。
绝对坐标
在CukeTest提供的自动化操作中,只有与屏幕尺寸相关的少数几个自动化操作使用绝对坐标,如下:
- 模拟鼠标操作模块API:使用鼠标操作屏幕上的目标位置,由于目标只需要一个位置信息(而不需要大小信息),因此只用了
x
与y
坐标。 - 模拟屏幕操作模块API:用于截取屏幕或获取屏幕颜色。
- 所有控件的
rect()
方法:rect()
方法会返回控件在桌面中的实际坐标(Rect
对象),因此是绝对坐标。 - 图案对象:用于从屏幕中匹配与目标图案相似的区域并操作。
- 缓存属性中的
boundingRectangle
:在控件侦测完成后,会立刻获取控件的一部分属性并缓存,其中的boundingRectangle
属性代表控件在桌面中的位置。需要注意的是,这个属性不会也不应该被使用,这个属性只代表控件被侦测时的区域,并不会随着实际控件改变。
相对坐标
除了上面绝对坐标一节描述的部分以外,CukeTest中的其它地方出现的坐标统一指的都是相对坐标。包括当不限于:
- 所有控件操作中的坐标参数(
x
和y
)click(x, y, mouseKey)
: 点击控件。dblClick(x, y, mouseKey)
: 双击控件。moveMouse(x, y, seconds)
: 移动鼠标到控件上。drag(x, y)
: 移动鼠标到控件的相对位置上并按住。配合drop()
方法使用。drop(x, y)
: 移动鼠标到控件的相对位置上并松开。通常在drag()
方法之后使用。
- 虚拟控件的相对位置:虚拟控件是指定目标控件中的一块区域作为虚拟的控件,实现点击或悬停在该区域上的自动化操作。而指定这块区域时,可以指定其相对坐标的原点方向(为
左上
(默认)、右上
、左下
、右下
四个方向)。