使用UIAutomator单击MarkerOptions

时间:2016-07-12 22:52:50

标签: android uiautomator

我试图让UIAutomator点击谷歌地图上的MarkerOptions。 This solution does not work ..

build.gradle(应用级别)

dependencies {
    androidTestCompile 'com.android.support.test:runner:0.3'
    androidTestCompile 'com.android.support.test:rules:0.3'
    androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'
}

识别TestClass

@RunWith(AndroidJUnit4.class)
public class ApplicationTest {

        UiDevice device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
        UiObject marker = device.findObject(new UiSelector().descriptionContains("title_of_marker. snippet_of_marker."));
        try {
            marker.click();
        } catch (UiObjectNotFoundException e) {
            e.printStackTrace();
        }
}

MapsFragment.java

private GoogleMap mMapView;

private void loadMapLocations() {

            mMapView.addMarker(new MarkerOptions()
                    .position(new LatLng(52.0988198,5.074657))
                    .title("title_of_marker")
                    .snippet("snippet_of_marker"));
}

enter image description here

输出:

W/System.err: android.support.test.uiautomator.UiObjectNotFoundException: UiSelector[CONTAINS_DESCRIPTION=title_of_marker. snippet_of_marker.]
W/System.err:     at android.support.test.uiautomator.UiObject.click(UiObject.java:412)

我已经尝试了一切,但现在不知道如何继续。

2 个答案:

答案 0 :(得分:1)

我使用了@ Diego的示例代码并将其粘贴到我的 ApplicationTest.java 中,这样可行,所以我不需要使用Culebra:

@Test
public void loginAndClickMarker() {

    UiDevice device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
    final BySelector bySelector = By.clazz(Pattern.compile(".*")).desc("title_of_marker. snippet_of_marker.").pkg("www.brandmkrs.com.damageapp");
    device.wait(Until.hasObject(bySelector), DEFAULT_TIMEOUT);
    device.findObject(bySelector).clickAndWait(Until.newWindow(), DEFAULT_TIMEOUT);
    SystemClock.sleep(1000);
}

答案 1 :(得分:0)

我创建了一个示例地图并添加了一个类似于你的标记。 已开始CulebraTester。开始测试录音。点击标记。

enter image description here

然后我添加了$.datepicker.formatDate('yy-mm-dd',new Date(pField.datepicker("getDate"))); (将很快自动生成)以获得此测试。

wait

将测试类添加到项目中。 运行测试。 并且有效!

这似乎是测试 CulebraTester 代码生成的好机会。