首页 > 解决方案 > 在原生 Android 应用程序中,所有元素都应该具有唯一的类名吗?

问题描述

我使用 UI 自动化查看器来获取类和 Appium 驱动程序状态的 xpath 选择器(正确):*** Capybara::Ambiguous Exception: Ambiguous match, found 4 elements matching visible xpath "//android.widget.Button"

元素有不同的text属性,所以我可以通过这个属性来识别,但是我想如果应用程序有多种语言可用,事情会变得复杂。

下面的文章似乎暗示,因为元素可以共享类名,不建议仅按类定位: https ://seleniumbycharan.com/2016/08/07/finding-elements-using-locators-in-appium/

一种解决方案是形成这些元素的数组并简单地引用索引。另一种是使用 text 属性。我不喜欢这两种解决方案。

我是否应该建议开发人员分配一些 ID 或只是不同的类名,或者是本机应用程序开发中常见的相同类名链,这绝不是一种反模式?

标签: androidandroid-uiautomator

解决方案


当我在 Appium Inspector 中启动该应用程序时,它说:“不建议使用 XPath 定位器,这会导致脆弱的测试。请您的开发团队提供独特的可访问性定位器!” 理想情况下,它应该自动生成一个简短且唯一的选择器。

对于 Android,要么 要么resource-idcontent-desc应该为空,如果可能的话应该包含唯一值。

对于 iOS,它是accessibility-idname

基于:http ://appium.io/docs/en/commands/element/find-elements/


推荐阅读