我正在开发一个测试用例,它需要使用QAF在iOS和Android平台上运行.我想遵循Page Object方法,在这种方法中,我可以在一个地方为两个平台定义元素,并在我的测试中重用它们.

在Appium中,我可以通过使用@androidFindBy和@iOSXCUITFindBy等注释来实现这一点.下面是一个例子:

@HowToUseLocators(androidAutomation = LocatorGroupStrategy.ALL_POSSIBLE, iOSXCUITAutomation = LocatorGroupStrategy.ALL_POSSIBLE)
@AndroidFindBy(xpath = "//android.widget.TextView[@resource-id='merchant-name']")
@iOSXCUITFindBy(accessibility = "Home")
protected WebElement home;

这让我可以为Android和iOS指定不同的定位器,框架会根据平台自动 Select 合适的定位器.

然而,我在QAF中找不到类似的实现.有没有办法在QAF中达到同样的效果?我非常感激任何关于如何在QAF中处理这一问题的指导或建议.谢谢!

推荐答案

QAF具有很强的跨平台测试自动化的可重用性. 你应该利用QAF的locator repository个特性从代码中抽象出定位器.例如,如果使用Page类, 而不是具有特定于平台的类

Ios主页.我是.


@iOSXCUITFindBy(accessibility = "Home")
protected WebElement home;

Andriod主页.我是.

@AndroidFindBy(xpath = "//android.widget.TextView[@resource-id='merchant-name']")
protected WebElement home;

您可以 for each 平台(在本例中为Android和iOS)使用单独的定位器存储库的单个类

主页.我是.

@FindBy(locator = "home.ele.loc")
protected WebElement home;

您可以 for each 平台创建定位器资料档案库并在其中添加定位器

resource
  - appilcation.properties
  -common
     - 
  - android
     - homescreen.properties
     - 
     - 
  -ios
     - homescreen.properties
     - 
     - 

在执行时,使用env.resources属性指定要使用的资源.例如,如果想要运行Android

env.resource=resource/common;resources/android

适用于Android

env.resource=resource/common;resources/ios

另一个候补是driver specific resources.在这种情况下,您的属性将如下所示

env.resource=resource/common
android.resources=resources/android
ios.resources=resources/ios

请参阅:

还有很好的培训material ,从Perfect到On Locator & Capabilities

Java相关问答推荐

Spring Webocket:尽管凭据设置为False,但MLhttpsify和Fetch请求之间的CORS行为存在差异

@ EnableRouting注释在Kotlin项目中不工作

为什么Java的代码工作(if condition内部的实例)

名称冲突具有相同的擦除

内存中的H2修剪尾随空格

暂停计时器

如何让DTO接受空字符串字段,但如果它们不为空,则应用JPA验证?

在Spring终结点中,是否可以同时以大写和小写形式指定枚举常量?

带有Health Check的Spring Boot BuildPack打破了本机映像构建过程

当构造函数创建一个新实例时,Java为什么需要&new";

将关闭拍卖的TimerService

如何在列表(链表)中插入一个新 node (作为prelast)

如何在@CsvSource中传递空格作为值

在JDK Flight Recorder中只记录单个线程

如何在运行docker的应用程序中获取指定的配置文件

如何使用Java ZoneID的区域设置?

始终使用Spring Boot连接mongodb上的测试数据库

窗口启动后不久,从java.awt.Graphics disapear创建的矩形

ANTLR 接受特殊字符,例如 .标识符或表达式中的(点)和 ,(逗号)

将在 Docker 中运行的 Spring Boot 连接到在 Docker 中运行的 PostgreSQL,无需 compose 文件?