1

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

非常感谢您的见解。

谢谢!

4

1 回答 1

1

一般的:

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

请注意:

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

在 Selenium 的上下文中了解 POM 结构是一个优势。我通常包含一个带有行为驱动开发BDD的测试用例描述(带有 Cucumber 或 SpecFlow 的 Gherkin 语法),但这不会是这里示例的一部分。

示例结构:

在此处输入图像描述

该结构由两个被测应用程序CalcVlcPlayer 组成。两者都遵循通用结构PageObjectsTests。您应该尝试在许多子文件夹中划分您的页面对象(文件)以保持概览。对于Tests文件夹/子文件夹,此子结构应该相似。

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

这个包装 au3 文件包含函数调用,它是处理开始/控制。

方法说明:

  • TestCaseExecutionOrder.au3

    • 调用子文件夹(Menu、PlaylistContentArea、SideNavigation)中的测试用例函数。
    • 测试用例NiceName包含一些测试步骤。

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

        #include-once ; this line is optional
        #include "Menu\OpenFolder.au3"
        
      • 测试步骤OpenFolder.au3(它是测试用例的一部分)包含执行文件夹加载和内容的函数。

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

          #include-once ; this line is optional
          #include "..\..\..\PageObjects\Menu\MenuItemMedia.au3" 
          
          • 文件MenuItemMedia.au3应仅包含该区域和操作的识别机制。

            • 这可以找到菜单项媒体(作为功能)。
            • 找到打开的文件夹菜单项(作为功能)等等。

              Func _findMenuItemMedia()
                  ; do the recognition action
                  ; ...
              
                  Return $oMenuItem
              EndFunc
              
      • 在测试步骤OpenFolder.au3中调用_findMenuItemMedia()如下:

        Global $oMedia = _findMenuItemMedia()
        

        可以.click执行或类似的东西等.getText

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

结论:

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

我推荐使用 VS Code,因为您可以在#include statements处从文件跳转到文件。这很方便。

我希望这能帮到您。

于 2019-02-09T18:22:56.300 回答