User interface AutoIT页面/窗口对象模型

User interface AutoIT页面/窗口对象模型,user-interface,testing,automation,autoit,testautomationfx,User Interface,Testing,Automation,Autoit,Testautomationfx,我想问一下,我们是否也可以在AutoIT中实现页面/窗口对象模型?我的大部分项目任务都是关于Web自动化的,我正在使用SeleniumWebDriver,框架使用页面对象模型。目前,我被分配到一个GUI自动化项目。如果可行的话,我也喜欢在AutoIT中实现这种方法,这样我就可以将对象重用到其他类中。我们计划单独使用AutoIT。我注意到互联网上的大多数示例都是在每个类/脚本上创建的对象 非常感谢您的见解 谢谢 概述: 使用页面对象模型(POM)设计模式的常见方法在AutoIt中并不可行。当然,您

我想问一下,我们是否也可以在AutoIT中实现页面/窗口对象模型?我的大部分项目任务都是关于Web自动化的,我正在使用SeleniumWebDriver,框架使用页面对象模型。目前,我被分配到一个GUI自动化项目。如果可行的话,我也喜欢在AutoIT中实现这种方法,这样我就可以将对象重用到其他类中。我们计划单独使用AutoIT。我注意到互联网上的大多数示例都是在每个类/脚本上创建的对象

非常感谢您的见解


谢谢

概述:

使用页面对象模型(POM)设计模式的常见方法在AutoIt中并不可行。当然,您也可以使用AutoIt创建对象结构,但它并不适用于该语言。无论如何,POM的一些目标可以通过以下示例建议的测试结构来实现

请注意:

由于您没有提供关于您的被测应用程序(AUT)的足够信息,我将解释一个基本结构。实现取决于您的应用程序(SWING/RCP、WinForm等)。对于页面对象识别,您需要哪种工具支持也很重要。除了可以由AutoIt中的
ControlCommand
函数控制的WinForm之外,使用UIASpyau3_uiautomation作为辅助工具也是一种合适的方法


了解硒的POM结构是一个优势。我通常使用行为驱动的开发BDD(Cumber或SpecFlow的小黄瓜语法)包含测试用例描述,但这不会是该示例的一部分

示例结构:

该结构包括两个正在测试的应用程序Calc和VlcPlayer。两者都遵循公共结构PageObjects和Tests。您应该尝试在多个子文件夹中划分页面对象(文件),以保持概览。对于测试文件夹/子文件夹,此子结构应类似

在测试区域中,根据您的测试目标,您可以包括几个测试阶段或测试类别(验收/UI测试、功能冒烟测试等等)。通过一个单独的包装文件,TestCaseExecutionOrder.au3控制执行顺序也是一个好主意。这应该适用于所有测试类别,以避免它们的混合

这个包装器au3文件包含函数调用,它是处理启动/控制

方法描述:

  • TestCaseExecutionOrder.au3

    • 调用子文件夹(菜单、播放内容区域、侧导航)中的测试用例函数
    • 测试用例名称由一些测试步骤组成

      • 必须通过以下方式将这些测试步骤包括在该脚本/文件中:

        #包含一次;这一行是可选的
        #包括“Menu\OpenFolder.au3”
        
      • 测试步骤OpenFolder.au3(它是测试用例的一部分)包含用于加载文件夹和内容的函数

        • 在该函数中,PageObject MenuItemMedia.au3将通过以下方式加载/包含到脚本/文件中:

          #包含一次;这一行是可选的
          #包括“.\..\..\PageObjects\Menu\MenuItemMedia.au3”
          
          • 文件MenuItemMedia.au3应仅包含该区域和操作的识别机制

            • 这可以通过“介质”菜单项找到(作为一项功能)
            • 或者查找“打开文件夹”菜单项(作为函数)等等

              Func\u findMenuItemMedia()
              ; 执行识别操作
              ; ...
              返回$oMenuItem
              EndFunc
              
      • 在测试步骤OpenFolder.au3中,它调用
        \u findMenuItemMedia()
        如下:

        Global$oMedia=\u findMenuItemMedia()
        
        可以执行
        .click
        或类似
        .getText
        等的操作

测试用例应该只包含必要的文件(测试步骤)。测试步骤还应仅包括必要的文件(页面对象)等。因此,可以一次性调整识别功能,并可在相应的测试步骤中使用

结论:

当然,很难用这种方式来解释,但是使用这种方法,您可以用类似于Selenium for web测试的方式来进行测试。请注意,您必须经常使用
Global
变量。您必须确保包含正确的内容,并且不要丢失测试的概述,这在基于OOP测试的方法中要容易得多

我建议使用VS代码,因为您可以在#include语句中从一个文件跳到另一个文件。那很方便

我希望这对你有帮助


请提供有关您的应用程序(AUT)的更多信息。然后,也许我可以在下面增加我的答案,提供更多的细节或建议。谢谢你的回答,斯文。这对我的工作很有帮助