我想问一下,我们是否也能在AutoIT中实现一个页面/窗口对象模型?我的大部分项目任务都是在Web自动化上进行的,我正在使用。目前,我被分配到一个GUI自动化项目。如果可行的话,我也喜欢在AutoIT中实现这种方法,这样就可以将对象重用到其他类中。我们计划使用独立的AutoIT。我注意到,internet中可用的大多数示例都是在每个类/脚本上创建的对象。
你的见解受到高度赞赏。
谢谢!
发布于 2019-02-09 18:22:56
General:
使用页面对象模型(POM)设计模式的常用方法在AutoIt中并不是完全可行的。当然,您也可以用AutoIt创建一个对象结构,但是它并不适合于语言。无论如何,POM的一些目标可以通过下面的测试结构示例建议来实现。
请注意:
由于您没有提供关于被测试应用程序(AUT)的足够信息,我将解释一个基本结构。实现取决于应用程序(SWING/RCP、WinForm等)。同样重要的是,您需要哪些工具支持来识别页面对象。除了可以在au3_uiautomation中由ControlCommand函数控制的WinForm之外,使用UIASpy或作为辅助工具也是一种合适的方法。
了解Selenium上下文中的POM结构是一种优势。我通常包括一个带有行为驱动开发BDD (带有Cucumber或SpecFlow的Gherkin语法)的测试用例描述,但是这里的示例不包括这个示例。
示例结构:

该结构由测试Calc和VlcPlayer两个应用程序组成。两者都遵循共同的结构PageObjects和测试。您应该尝试在许多子文件夹中对页面对象(文件)进行分离,以保持概述。这个子结构应该类似于测试文件夹/子文件夹。
在测试领域,您可以根据您的测试目标(验收/UI测试、只进行功能性冒烟测试等等)包括几个测试阶段或测试类别。通过分离包装文件TestCaseExecutionOrder.au3.控制执行顺序也是个好主意这应该存在于所有测试类别,以避免它们的混合。
这个包装器au3文件包含函数调用,它是处理开始/控制。
方法描述:
- Calls the functions which are the test cases in the subfolders (Menu, PlaylistContentArea, SideNavigation).
- Test case _NiceName_ consists of some test steps. - These test steps have to be included into that script/file by:#include -一次;这一行是可选的#include "Menu\OpenFolder.au3“
-测试步骤OpenFolder.au3 (测试用例的一部分)包含执行文件夹加载和内容的函数。
- In that functions the PageObject _MenuItemMedia.au3_ will be loaded/included into the script/file by:#include -一次;这一行是可选的#include "......\PageObjects\Menu\MenuItemMedia.au3“
- File _MenuItemMedia.au3_ should only contain the recognition mechanism for that area and actions. - This could be _find menu item Media_ (as a function).
- or _find open folder menu item_ (as a function) and so on.Func _findMenuItemMedia();进行识别操作;.返回$oMenuItem EndFunc
- In the test step _OpenFolder.au3_ which calls `_findMenuItemMedia()` like:Global $oMedia = _findMenuItemMedia()
可以执行.click或类似.getText之类的东西吗?
测试用例应该只#include必需的文件(测试步骤)。测试步骤还应该只#include所需的文件(页面对象)等等。因此,可以对识别函数进行一次调整,并可在相应的测试步骤中使用。
结论:
当然,很难用这种方式来解释它,但是使用这种方法,您可以使用类似Selenium的方法来进行web测试。请注意,您必须经常使用Global变量。您必须确保包含正确的内容,并且不要丢失测试的概述,这在基于OOP测试的方法中要容易得多。
我建议使用VS代码,因为您可以在#include语句中从一个文件跳到另一个文件。挺方便的。
我希望这能帮到你。
https://stackoverflow.com/questions/54323153
复制相似问题