绝对坐标和相对坐标

绝对坐标也叫作桌面坐标。 在CukeTest的桌面自动化中,存在两种坐标表示,分别称为绝对坐标相对坐标

  • 绝对坐标:以主显示器左上角为原点构建的坐标系。通常用于Mouse的鼠标操作,以及部分模型的缓存坐标属性
  • 相对坐标:以控件左上角为原点构建的坐标系。除了Mouse库以外的所有控件操作都基于相对坐标模式。

对于自动化,坐标计量通常采用以下原则:

  • 基本度量单位为实际像素,因此只受分辨率而不受缩放比例影响。
  • 水平x坐标从左向右增加;
  • 垂直y坐标从上到下增加;
  • 原点(0,0)取决于所使用的坐标类型(绝对/相对)。绝对坐标原点一般为主屏幕左上角顶点;相对坐标原点为当前控件(有时是父控件)左上角顶点。

Rect对象

为了能够描述控件的位置和大小信息,我们引入了Rect对象,对象的属性由左上角坐标、宽度高度组成。如下:

  • x: number类型,相对坐标的水平像素;
  • y: number类型,相对坐标的垂直像素;
  • width: number类型,水平宽度,单位为像素;
  • height: number类型,垂直高度,单位为像素;

小知识:在Windows系统中还存在另外一种描述坐标的对象RECT 结构 (windef.h),同样是由四个值来描述控件位置和大小信息,但是宽度和高度改成了右下角坐标,即通过左上角和右下角两个点的坐标信息来描述控件位置大小情况。

绝对坐标

在CukeTest提供的自动化操作中,只有与屏幕尺寸相关的少数几个自动化操作使用绝对坐标,如下:

  • 模拟鼠标操作模块API:使用鼠标操作屏幕上的目标位置,由于目标只需要一个位置信息(而不需要大小信息),因此只用了xy坐标。
  • 模拟屏幕操作模块API:用于截取屏幕或获取屏幕颜色。
  • 所有控件的rect()方法:rect()方法会返回控件在桌面中的实际坐标(Rect对象),因此是绝对坐标。
  • 图案对象:用于从屏幕中匹配与目标图案相似的区域并操作。
  • 缓存属性中的boundingRectangle:在控件侦测完成后,会立刻获取控件的一部分属性并缓存,其中的boundingRectangle属性代表控件在桌面中的位置。需要注意的是,这个属性不会也不应该被使用,这个属性只代表控件被侦测时的区域,并不会随着实际控件改变。

相对坐标

除了上面绝对坐标一节描述的部分以外,CukeTest中的其它地方出现的坐标统一指的都是相对坐标。包括当不限于:

  • 所有控件操作中的坐标参数(xy
    • click(x, y, mouseKey): 点击控件。
    • dblClick(x, y, mouseKey): 双击控件。
    • moveMouse(x, y, seconds): 移动鼠标到控件上。
    • drag(x, y): 移动鼠标到控件的相对位置上并按住。配合drop()方法使用。
    • drop(x, y): 移动鼠标到控件的相对位置上并松开。通常在drag()方法之后使用。
  • 虚拟控件的相对位置:虚拟控件是指定目标控件中的一块区域作为虚拟的控件,实现点击或悬停在该区域上的自动化操作。而指定这块区域时,可以指定其相对坐标的原点方向(为左上(默认)、右上左下右下四个方向)。

results matching ""

    No results matching ""