2016-07-12 6 views
2

UIAutomator가 Google지도에서 MarkerOptions를 클릭하려고합니다. This solution does not work ...UIAutomator를 사용하여 MarkerOptions 클릭

build.gradle (APP 레벨)

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) 

나는 모든 노력을했지만, 지금 진행하는 방법을 모르겠어요.

답변

0

나는 샘플지도를 만들고 자신과 비슷한 표식을 추가했습니다. 시작 CulebraTester. 테스트 레코딩을 시작했습니다. 마커를 클릭합니다.

enter image description here

는 그냥 (곧 자동 생성됩니다)에 wait이 테스트를 얻기 위해 추가했다.

@Test 
public void culebraGeneratedTest() throws Exception { 
    final BySelector bySelector = By.clazz(Pattern.compile(".*")).desc("title_of_marker. snippet_of_marker.").pkg("com.example.diego.mymapapplication"); 
    mDevice.wait(Until.hasObject(bySelector), DEFAULT_TIMEOUT); 
    mDevice.findObject(bySelector).clickAndWait(Until.newWindow(), DEFAULT_TIMEOUT); 
} 

테스트 클래스를 프로젝트에 추가했습니다. 테스트를 실행하십시오. 그리고 작동합니다!

테스트 할 수있는 좋은 기회 인 것 같습니다. CulebraTester 코드 생성.

+0

thnx 내가 CulebraTester을 신청했습니다. –

+0

https://www.linkedin.com/pulse/android-ui-testing-androidviewclientculebra-ahmed-kasem이 솔루션을 시도했지만이 방법도 사용할 수 없습니다. –

+0

언급 한 자습서는 Python 용입니다. 대답에 포함 된 코드는 UiAutomator/Java입니다. 나는 코드를 테스트하고 나를 위해 일했는데, 당신에게 효과가없는 것은 무엇입니까? ''com.example.diego.mymapapplication "'을 패키지 이름으로 변경 했습니까? –

1

나는 디에고의 예제 코드 @ 사용하고 내 ApplicationTest.java이 점을 붙여이 작동, 그래서 쿨 레브라를 사용할 필요가 없습니다했습니다

@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); 
} 
+0

CulebraTester는 코드를 생성 한 위치 나 방법을 나타 내기 위해 언급 된 것이 분명하다고 생각했습니다. CulebraTester는 이러한 종류의 코드를 생성하는 데 도움이되는 강력한 도구입니다. –