Appium查找元素的最佳实践

Appium查找元素的最佳实践,appium,appium-ios,appium-android,Appium,Appium Ios,Appium Android,我有两个本机应用程序(不是混合或react-native),它们共享相同的设计,一个用于Android(JAVA),另一个用于IOS(OC)。现在我需要对这两个应用程序进行一些测试。我正试着用Appium做这件事 Appium提供了许多查找元素的方法。要为这两个应用程序编写测试用例,我似乎可以使用AccessibilityId。如果我要求开发者将相同的AccessibilityId添加到android和ios项目中,那么我可以使相同的测试代码适用于这两个应用程序。这是最佳实践吗?这可能会给and

我有两个本机应用程序(不是混合或react-native),它们共享相同的设计,一个用于Android(JAVA),另一个用于IOS(OC)。现在我需要对这两个应用程序进行一些测试。我正试着用Appium做这件事


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

,您可以使用
uiautomatorviewer
查找元素

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

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

@iOSFindBy(id = "send_button")
@AndroidFindBy(id = "SEND")
private MobileElement sendButton;
您的操作代码将是:

sendButton.click()
有关这些标签和相关标签的更多信息,请访问

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

driver.findElementById("send_button");

以上所有操作都可以使用XPath以及文档中提到的其他属性来执行。

由于同一应用程序运行在两个不同的平台上,因此如果您的项目具有相同的可访问性ID(意味着ios和android开发人员都在使用该ID)。
否则,使用相同的逻辑测试脚本和不同的对象repo/capabilities将对您有所帮助

是的。我发现它是Appium最受支持的语言。我不建议在您的应用程序中使用AccessibilityId进行测试。原因是,实际使用辅助技术的用户将听到AccessibilityId的声音,这意味着内容应该与应用程序上显示的内容非常匹配,并且可能会发生变化,这意味着随着时间的推移,测试套件需要更多的维护。