Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在本机Android应用程序中,所有元素都应该具有唯一的类名吗?_Android_Android Uiautomator - Fatal编程技术网

在本机Android应用程序中,所有元素都应该具有唯一的类名吗?

在本机Android应用程序中,所有元素都应该具有唯一的类名吗?,android,android-uiautomator,Android,Android Uiautomator,我使用UI automation viewer为类和Appium驱动程序获取一个xpath选择器,正确声明: ***Capybara::不明确异常:不明确匹配,找到4个元素匹配可见xpath//android.widget.Button 元素有不同的文本属性,所以我可以通过这个属性来识别,但是我想如果应用程序有多种语言可用,事情会变得复杂 下面的文章似乎暗示,由于元素可以共享类名,因此不建议仅按类定位: 一种解决方案是形成这些元素的数组,并简单地引用索引。 另一种方法是使用text属性。 这两

我使用UI automation viewer为类和Appium驱动程序获取一个xpath选择器,正确声明: ***Capybara::不明确异常:不明确匹配,找到4个元素匹配可见xpath//android.widget.Button

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

下面的文章似乎暗示,由于元素可以共享类名,因此不建议仅按类定位:

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


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

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

对于Android,资源id或内容描述不应为空,如果可能,应包含唯一值

对于iOS,它是可访问性id或名称


基于:

Ya,但正如您所见,我只有XPATH。

对类似元素使用不同的类将是一种反模式。类定义元素的行为。这与HTML/CSS中主要用于定义演示文稿的类有很大不同。我需要一个屏幕截图或您试图单击的元素的某些内容才能真正回答这个问题,但是的,henry所说的使用不同的类作为元素将是一种反模式,按类定位元素在常规,因为默认情况下有大量相同类名的元素。