2016-07-12 2 views
2

Я пытаюсь сделать UIAutomator нажатием на MarkerOptions на Картах Google. This solution does not work ..Нажатие кнопки MarkerOptions с использованием UIAutomator

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) 

Я пробовал все, но не знают, как действовать в настоящее время.

ответ

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.mymapapication ''на ваше имя pkg? –

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 - мощный инструмент для создания такого кода –

Смежные вопросы