描述模式

描述模式是一种直接在代码中通过属性构造测试对象的方式,它区别于通过对象模型方式加载测试对象的方式。

描述模式从"leanpro.win"中输出的"Auto"对象开始调用"get[ControlType]"方法,例如Auto.getWindow()、Auto.getButton()等。"get[ControlType]"方法接收一个对象,包含属性的集合,这些属性以"AND"的关系构造一个测试对象,用来查找控件。

在下面的例子中的代码,可以直接从属性直接构造测对象,而不用加载对象模型:

  1. const { Auto } = require('leanpro.win');
  2. Auto.getWindow({
  3. "className": "ApplicationFrameWindow",
  4. "title": "计算器 ‎- 计算器"
  5. }).getWindow({
  6. "className": "Windows.UI.Core.CoreWindow",
  7. "title": "计算器"
  8. }).getGeneric({
  9. "type": "Group",
  10. "automationId": "NumberPad",
  11. "name": "数字键盘"
  12. }).getButton({
  13. "automationId": "num5Button"
  14. }).click();

上述例子中,每个调用都是传一个对象参数,这个对象包含了多个键/值对,组合在一起后形成过滤条件寻找对象。

描述模式调用"get[ControlType]"方法返回的对象具有与对象模型中获取的对象有相同的方法和属性,因此其它的调用方式相同。

描述模式的优点是无需依赖对象模型,可以动态构建测试测试对象,或根据需要访问界面上动态创建的控件。它的缺点是不能集中的管理测试对象,不能使用对象管理器的编辑界面修改或验证测试对象,维护代码的开销大。因此可以根据场景的需要使用描述模式。

生成代码

描述模式的代码可以手动键入,但通过模型管理器生成则更为方便。下面的一些方式可以生成描述模式的代码:

  • 点击“添加对象”并侦测到一个控件后弹出“添加对象”对话框,这时点击“复制代码”,会将描述模式代码复制到剪贴板中:

描述模式 - 图1

  • 在测试对象编辑界面,勾选“描述模式”,这时候再复制的代码就是描述模式代码。

描述模式 - 图2

  • 将对象直接从对象树拖拽到编辑器时,会弹出方法选择对话框,这时勾选“复制代码”复选框,生成的代码也是描述模式代码。

描述模式 - 图3