Appium 查找元素的最佳实践

Best practice for Appium to find element

我有 2 个本机应用程序(不是 hybrid 或 react native),它们共享相同的设计,一个用于 Android(JAVA),另一个用于 IOS(OC ).现在我需要对这两个应用程序进行一些测试。我正在尝试使用 Appium 来做到这一点。

Appium 提供了很多方法来查找元素。要为这两个应用程序编写测试用例,似乎我可以使用 AccessibilityId。如果我要求开发人员将相同的 AccessibilityId 添加到 android 和 ios 项目,那么我可以使相同的测试代码适用于这两个应用程序。这是最佳做法吗?这可能会给 android 和 ios 开发团队带来很多努力来添加 AccessibilityIds

对于 android 应用程序,您可以使用 uiautomatorviewer 来查找元素。

是的,使用辅助功能 ID 是首选方法。 ID 无需跨平台匹配。

您可以在 class 定义中使用 FindBy 标签定义这些元素,如下所示:

@iOSFindBy(id = "send_button")
@AndroidFindBy(id = "SEND")
private MobileElement sendButton;

您的操作代码将是:

sendButton.click()

有关这些标签和相关标签的更多信息,请访问 PageFactory library docs

如果您的 ID 确实匹配,您可以内联执行您的操作(下面的示例),但我通常更喜欢在我的方法之外定义我的元素。

driver.findElementById("send_button");

以上所有内容都可以使用 xpath 以及文档中提到的其他属性来执行。

由于同一个应用程序在 2 个不同的平台上运行,如果您的项目拥有相同的 AccessibilityId(意味着 ios 和 android 开发人员都致力于此),您可以拥有相同的 AccessibilityId。 否则,具有不同对象 repo/capbilities 的相同逻辑测试脚本会对您有所帮助。