首页 > 解决方案 > 如何在 Reactnative 应用程序的测试自动化中重用步骤定义和页面对象?

问题描述

我创建了一个 Java-Cucumber 框架,它使用 Cucumber-JVM、appium、java、maven 在 ReactNative 驱动的 App 上运行自动化场景。因此,使用 ReactNative 我们拥有 Android 和 iOS 应用程序。

该框架基于 Selenium Multibrowser 概念,其中驱动程序一旦实例化(对于浏览器)就可以利用现有的页面对象。

问题 1:而在移动的情况下,虽然 Page Object 方法相同,但 IOS 和 Android 的定位器是不同的。[我没有使用页面工厂(@Findby 注释)所以,我想知道如何重用 iOS 编写的页面对象方法,用于 Android?问题 2:我使用 Pico-Container 将 Page 对象播种到 Step-defs 中。World 在 BaseClass 中实例化,它是 Android 和 iOS Stepdefs 的父类。但是如果我调用,Android step defs 中的page objectmager 然后得到NullPointer 异常。

问题3:使用Cucumber如何重用iOS for Android的step-defs实现?

我们使用单例模式进行 Appium 驱动程序实例化。

标签: react-nativeselenium-webdriverappiumcucumber-jvm

解决方案


您应该看看QAF,它旨在支持 Web、移动和 Web 服务功能测试自动化,具有不同的测试创作方式,包括BDD

使用具有资源管理的定位器存储库概念, 您可以使用相同的代码/页面。

此外,您可以在不同平台或跨项目的项目中重用步骤实现(常见的可重用步骤打包在 jar 中并在项目中添加 jar)。如果由于功能差异 step 对不同平台有不同的实现,您可以通过在不同的包中实现 step 来管理它。在这种情况下,您可以在执行时配置步骤提供程序包

简而言之,您可以通过使用框架提供的不同概念来实现最高级别的可重用性。


推荐阅读