You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在QAF中统一定义iOS和Android平台专属页面元素?

在Qmetry Automation Framework(QAF)中实现跨iOS/Android的页面对象元素定位

QAF本身提供了多种方式实现跨平台的元素定位复用,完全可以达到你想要的效果,以下是两种最常用的方案:

方案一:直接在@FindBy注解中指定多平台定位器

QAF支持在定位器字符串中通过平台前缀区分不同平台的定位规则,框架会自动根据当前运行的平台匹配对应的定位器。示例代码如下:

import com.qmetry.qaf.automation.ui.webdriver.QAFWebElement;
import com.qmetry.qaf.automation.ui.annotations.FindBy;

public class HomePage {
    @FindBy(locator = "android=//android.widget.TextView[@resource-id='merchant-name']; ios=accessibility('Home')")
    protected QAFWebElement home;
}
  • 平台前缀支持android、ios,更细分的话还可以用androidNative、iosNative、androidHybrid等
  • 不同平台的定位器用分号;分隔,QAF会自动识别当前运行环境并选择对应定位器
  • 推荐使用QAFWebElement替代原生WebElement,它集成了QAF的自动化增强能力(如等待、重试操作等)

方案二:使用定位器仓库集中管理(推荐大型项目)

将所有跨平台定位器统一放在properties文件中(比如locators.properties),再在页面对象中引用对应的key,便于统一维护:

  1. 定位器文件locators.properties内容:
home.btn.loc=android=//android.widget.TextView[@resource-id='merchant-name']; ios=accessibility('Home')
  1. 页面对象代码:
import com.qmetry.qaf.automation.ui.webdriver.QAFWebElement;
import com.qmetry.qaf.automation.ui.annotations.FindBy;

public class HomePage {
    @FindBy(locator = "home.btn.loc")
    protected QAFWebElement home;
}

这种方式的优势是定位器与代码解耦,修改定位规则不需要改动测试代码,更适合团队协作和大规模测试项目。

额外说明

QAF默认的定位策略就类似Appium的LocatorGroupStrategy.ALL_POSSIBLE,会自动匹配当前平台对应的定位器,无需额外配置注解。如果需要更复杂的策略,可以通过QAF的配置项调整定位器优先级。

内容的提问来源于stack exchange,提问作者Ostan Dsouza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 14:42:45