Appium 如何在本机Android应用程序中检测并单击Mapbox标记?

Appium 如何在本机Android应用程序中检测并单击Mapbox标记?,appium,appium-android,Appium,Appium Android,我们正在尝试为基于Mapbox的本机移动应用程序创建自动化测试。自动测试需要确定屏幕上存在的标记数量、屏幕上存在的标记群集数量、单击标记或群集等 通过UIAutomatorViewer或Appium inspector查看Android应用程序上的Mapbox地图时,地图上可见的标记不会显示在对象层次结构中 Android原生移动应用程序开发团队可以做些什么来显示标记/集群,以便Appium可以看到它们 或者,自动化团队可以探索哪些其他选项来开发自动化测试?Espresso并不理想,因为自动化团

我们正在尝试为基于Mapbox的本机移动应用程序创建自动化测试。自动测试需要确定屏幕上存在的标记数量、屏幕上存在的标记群集数量、单击标记或群集等

通过UIAutomatorViewer或Appium inspector查看Android应用程序上的Mapbox地图时,地图上可见的标记不会显示在对象层次结构中

Android原生移动应用程序开发团队可以做些什么来显示标记/集群,以便Appium可以看到它们

或者,自动化团队可以探索哪些其他选项来开发自动化测试?Espresso并不理想,因为自动化团队无法访问本机移动应用程序的源代码


请参见->注释->绘制标记,以获取我们要检测并单击的标记示例。

由于Mapbox SDK使用OpenGL渲染,而不是本机组件,大多数测试自动化框架将无法识别添加到地图中的标记或簇等UI元素

有一些测试人员使用来自加速KAZE功能项目的图像识别在屏幕上查找项目,以便计数和选择它们。一些示例代码可以在


另一种方法可能是让移动应用程序开发人员包括测试挂钩,允许测试代码使用Mapbox API查询呈现的功能。这里有相关的Mapbox文档:

我之前遇到过这样一种情况,即当从Appium inspector中选择某个元素时,即使它显示在屏幕上,也没有突出显示

后来,当我扫描完整的层次结构树时,单击每个节点就可以找到元素


我建议您单击每个节点并检查,标记将出现在层次结构树中。只是检查器光标无法突出显示它。

您可以要求开发团队为所有标记添加相同的资源id,但每个标记的automationId(cont desc)不同。您将能够使用id(List=driver.findElementsById(“…”)计算屏幕中存在的标记的数量,并单击使用自动化id(mobileeelement=driver.findElementByAccessibilityId(“…”))的单独标记。Mapbox的或似乎不允许设置资源id或自动化id。您能分享一个具体的Mapbox示例吗?标记选项不能放在视图中吗?若它可以放在视图中,你们可以在那个里添加id。