【问题标题】:How to detect and click on Mapbox markers in native Android application?如何检测并点击原生 Android 应用程序中的 Mapbox 标记?
【发布时间】:2019-01-03 18:58:22
【问题描述】:

我们正在尝试为 Mapbox 基于 Maps SDK for Android 的原生移动应用程序创建自动化测试。自动化测试需要确定屏幕上出现的标记数量、屏幕上出现的标记簇的数量、单击标记或簇等。

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

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

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

请参阅Mapbox demo application's -> 注释 -> 为我们想要检测并单击的标记示例绘制标记。

【问题讨论】:

  • 您可以要求您的开发团队为所有标记添加相同的资源 ID,但为每个标记添加不同的自动化 ID (cont-desc)。您将能够使用 id (List = driver.findElementsById("...")) 计算屏幕中存在的标记数量,并使用自动化 id(MobileElement = driver.findElementByAccessibilityId("...")).
  • Mapbox 的 MarkerOptionsMarkerViewOptions 似乎不允许设置资源 ID 或自动化 ID。您能否分享一个实现此功能的 Mapbox 特定示例?
  • 不能将 MarkerOptions 放在视图内吗?如果它可以放在视图内,你可以在那里添加 id。

标签: appium appium-android


【解决方案1】:

由于 Mapbox SDK 使用 OpenGL 渲染,而不是原生组件,大多数测试自动化框架将无法识别 UI 元素,例如您添加到地图的标记或集群。

有一些测试人员使用 Accelerated-KAZE 功能项目中的图像识别来查找屏幕上的项目,以便计算和选择它们。一些示例代码可以在https://github.com/bitbar/bitbar-samples/tree/master/image-recognition 找到

另一种方法可能是让移动应用程序开发人员包含测试挂钩,允许您的测试代码使用 Mapbox API 来查询呈现的功能。 Mapbox 文档在这里:https://www.mapbox.com/android-docs/maps/overview/query/#query-rendered-features

【讨论】:

    【解决方案2】:

    我之前遇到过这种情况,即使从 Appium 检查器中选择一个元素,即使它显示在屏幕上,也没有突出显示。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-08
      • 1970-01-01
      • 2016-06-19
      • 2020-08-29
      • 1970-01-01
      • 2020-07-25
      • 1970-01-01
      相关资源
      最近更新 更多