我是Selenium的新手,需要一些建议。
据我所知,在Page Object中,我们必须为每个页面创建一个Java类。在关键字驱动框架中,我们需要创建一个通用模块,该模块基于输入键基于预定义规则执行操作。
我的问题是,当我们实现关键字驱动的框架时,页面对象不再是一个选项吗?关键字驱动的框架和页面对象实现可以共存吗?
是的,他们可以共存。
无论你想测试什么方式,我都把Page Object视为基础。它大大降低了维护成本。
关键字驱动框架是作为更高的抽象层创建的,因此非技术性更容易理解测试用例设计。比如名为login的函数解释它将登录。然后,此登录功能使用页面对象来创建元素调用。
因此,Page Object只是一个较低级别的抽象,可以更轻松地创建测试用例。
http://www.ranorex.com/blog/keyword-driven-test-automation-framework
此链接说明了驱动的关键字。
这是在Selenium中实现的示例关键字驱动框架。
在纯粹的低级关键字驱动框架中使用POM是没有意义的。因为页面的每个元素和相应的操作都将在电子表格中描述。
如果您要使用高级关键字驱动或混合框架,那么您可以使用POM。
混合框架:http://www.testautomationguru.com/hybrid-test-automation-framework/
上面的例子是在QTP中。但你会明白这个想法。
页面对象设计:http://www.testautomationguru.com/arquillian-graphene-page-fragments/
关键字驱动将基于类中关键字的抽象而工作。对于简单的示例,单击,输入,按钮,下拉列表,单选按钮,复选框等是关键字,并且必须维护您班级中的各个功能。为了维护这些,他们中的大多数使用excel,csv。
例如:BaseClass包含关键字的所有操作,如public void input(String locatorType,String locatorValue)//这里的locator类型将是xpath,id,name,class,tag和各自的值
问题: - 今天我想用注册和登录,好吧没有问题。我准备好了步骤并成功运行然后明天管理员只想执行登录功能。我们如何管理,您能否重写这些步骤?我可以使用任何测试框架,可能是来自excel输入和testng的歧义!那更好吗?不,因为它很容易看到但很难管理!
现在页面对象模型: - 它不是一个框架,它是一种设计模式或方法。在这里,如果您使用任何测试框架(testng),它很容易维护您的方法/操作。我们可以使用有意义的datadrivern。
因此,基于您的项目和需求,我们必须维护和准备框架并坚持使用该框架。
我有关键字驱动,混合和页面对象模型。
页面对象模态:适用于已完成的应用程序。但是如果你正在研究敏捷那么它就不合适..如果定位器一直在变化,每次你都会失败。考虑到你的登录页面上有一个取消按钮,你最不愿意改变在取消。如果定位器发生了变化,那么它将使您在所有测试用例中失败,因为每个测试用例都应该只遇到登录页面/。
混合:关键字+ POM:
这是一个更好的选择。因为您将每个定位器保存在单独的文件中,所以您始终只需查看该测试用例所需的定位器。
我不同意声明“如果定位器不断变化,每次你都会失败......”这是真的,如果定位器改变了脚本将无论框架如何都会失败。我们需要使用脚本逻辑处理这个问题,脚本应该足够聪明,可以找到任何定位器的元素。