控件的虚拟化

在进行桌面自动化的时候,有时候会遇上需要将目标控件无法识别的情况。这个时候可以通过虚拟化整个应用来完成操作的,比如需要调用虚拟控件的clickVirtualText()方法来点击目标窗口中的指定按钮。在目标按钮无法识别的情况下,你可能会采取这样的方式:

为目标按钮创建虚拟控件

由于应用的外窗口仍然可以识别,因此先识别外窗口得到Window操作对象,接着在Window下创建虚拟控件,区域为目标按钮的所在,虚拟控件命名为VirtualButton。那么操作按钮的脚本语句如下:

  1. await model.getWindow("Window").getVirtual("VirtualButton").click();

当这种方法不可避免的会因为虚拟控件本身的原因不擅长应付窗口变化,因此CukeTest提供了另一种方法。

控件虚拟化

虚拟控件提供了clickVirtualText()的API,因此我们通过按钮上的文本内容来点击,假设目标按钮上的内容为“确认”,那么在添加窗口控件后,我们可以使用以下代码来点击该控件:

  1. await model.getWindow("Window").getVirtual().clickVirtualText();

注意Window控件后面无参数调用getVirtual()方法,这中调用方式可以理解为强制将目标控件(这里是Window控件)转化为虚拟控件,而转化的逻辑是建立一个与目标控件位置、大小一致的虚拟控件。