【问题标题】:How to call a click on the Google Maps Marker marker in UI Automator?如何在 UI Automator 中调用 Google Maps Marker 标记的点击?
【发布时间】:2018-03-03 22:09:59
【问题描述】:

在 UIAutomator Viewer 中可以看到标记除了索引没有任何唯一性。

我尝试通过以下方式模拟对特定标记的点击:

UiObject gMap = mDevice.findObject(new UiSelector().descriptionContains("Google Map"));
UiObject marker = mDevice.findObject(gMap.getSelector().index(1));
marker.clickAndWaitForNewWindow();

但是点击没有发生。如何模拟点击标记?

【问题讨论】:

    标签: google-maps-markers google-maps-android-api-2 android-uiautomator


    【解决方案1】:

    不要使用gMap.getSelector()。您应该使用childSelector 在地图视图中搜索标记

    UiObject marker = mDevice.findObject(UiSelector()
            .descriptionContains("Google Map")
            .childSelector(UiSelector().instance(1))
    )
    

    在点击之前尝试使用marker.waitForExists(5000)。通常它们不会立即出现在地图上

    【讨论】:

      【解决方案2】:

      使用CulebraTester 和示例地图应用程序(如图所示)

      其中有 3 个标记:2 个红色有 title 和 sn-p 而蓝色没有,您可以看到生成的代码有何不同。

      mDevice.findObject(By.desc("title_of_marker1. snippet_of_marker1.").clazz("android.view.View").text(Pattern.compile("")).pkg("com.example.diego.mymapapplication")).clickAndWait(Until.newWindow(), DEFAULT_TIMEOUT);
      mDevice.findObject(By.desc("title_of_marker2. snippet_of_marker2.").clazz("android.view.View").text(Pattern.compile("")).pkg("com.example.diego.mymapapplication")).clickAndWait(Until.newWindow(), DEFAULT_TIMEOUT);
      mDevice.findObject(By.desc("Google Map").clazz("android.view.View").text(Pattern.compile("")).pkg("com.example.diego.mymapapplication")).clickAndWait(Until.newWindow(), DEFAULT_TIMEOUT);
      

      第三个选择器过于宽泛且模棱两可。

      我猜如果你添加 title 和/或 sn-p 你点击它们就没有问题了。

      【讨论】:

        猜你喜欢
        • 2015-07-25
        • 2012-03-24
        • 1970-01-01
        • 2019-10-25
        • 2019-07-26
        • 2012-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多