创建虚拟控件

虚拟控件是通过将某界面控件的某个区间定义为一个逻辑的控件。它可以实现以下功能:

  • 精准点击
  • 调用文字识别(OCR)的方法,通过图像的方式获得文字内容或者操作文字区域。
  • 截屏或进行图片比对。
  • 更细粒度的控制。例如某些应用有自绘制的界面,其中的某些按钮是非标准的控件,无法通过识别对象加到模型中。一种对它的操作方法是计算鼠标点击位置。用位置坐标的参数控制它的点击。但是这种点击方法有缺陷:

    1. 代码的可读性差
    2. 当窗体可拉伸情况下,有效点击坐标位置是变化的。

    使用虚拟控件可以避免以上的缺点。

下面通过实例,介绍在模型管理器如何定义虚拟控件。虚拟控件的API的说明请参见虚拟控件API

定义虚拟控件

在模型管理器中,虚拟控件可以有两种创建方式。在控件截屏页的工具条上,可以选择:

  1. "创建虚拟控件",然后直接在控件截屏上通过拖拽鼠标绘制出虚拟控件。
  2. "虚拟控件高级编辑",打开虚拟控件编辑窗口,批量编辑虚拟控件。

下面通过样例演示虚拟控件的创建。 在QT中的动画演示样例程序appchooser中有下面的界面。

左图是打开时候的界面,当点击其中的某个图标,图标会放大居中。

为了自动化这个应用,可先识别这个窗体控件,然后在Panel上点右键,选择编辑虚拟控件,并打开虚拟控件对话框:

这里:

  1. 添加4个虚拟控件,分别命名为Camera、Glass、Ball、Book。
  2. 为这些控件在图片上选择对应的区域。
  3. 选择对齐的方式。例如Book控件选择的是靠右下对齐,这样,当窗体伸缩时,虚拟控件仍旧在右下角对应的位置点击这个图标。
  4. 点击确定保存这些虚拟控件。

回到模型管理器界面:

可以看到:

  • 虚拟控件在父控件(Custom)中的位置
  • 虚拟控件的方法列表

为虚拟控件生成代码后如下:

JavaScript
Python
await model.getVirtual("Camera").click();
model.getVirtual("Camera").click()

可以看到调用非常简洁。

虚拟控件的API的说明请参见虚拟控件API

results matching ""

    No results matching ""