2015-04-29 1 views
1

Я переключаюсь с robotium на espresso, я пишу тестов, используя apk, у меня нет доступа к коду. В robotium, используя solo.getView («view-id»), мы можем получить доступ к представлению, но я не понимаю, как это сделать в эспрессо? Метод espresso witId() требует R.id.viewid, к которому у меня нет доступа.Espresso Как получить доступ к представлениям без использования R.id.viewid, как мы это делаем в robotium?

public class AaEspressoTest { 

private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "com.tri.re.CordActivity"; 
private static Class<?> launcherActivityClass; 

static { 
    try { 
     launcherActivityClass = Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME); 
    } catch (ClassNotFoundException e) { 
     throw new RuntimeException(e); 
    } 
} 

@Rule 
public ActivityTestRule<?> mActivityRule = new ActivityTestRule(launcherActivityClass); 


@Test public void testHello() throws Exception{ 

    onView(withText("Browse older recordings")).perform(click()); 

    //Id is not accessible shows red 
    onView(withId(R.id.button)).perform(click()); 

} 

} 
+0

, если вы можете получить доступ к ресурсам целевого приложения (с помощью контекста) вам может использовать метод 'getIdentifier' в https://developer.android.com/reference/android/content/res/Resources.html – Budius

ответ

5

Вы можете использовать вспомогательную функцию, чтобы получить идентификатор:

private static int getId(String id) { 
    Context targetContext = InstrumentationRegistry.getTargetContext(); 
    String packageName = targetContext.getPackageName(); 
    return targetContext.getResources().getIdentifier(id, "id", packageName); 
} 

Затем вы можете использовать идентификатор в Espresso:

onView(withId(getId("button"))).perform(click()); 
+0

блестящий !! это именно то, что я хотел. Спасибо, тонна сделала мой день .. kudos –

0

Вы можете использовать uiautomator из командной строки или с помощью открытия Android Device Monitor «s Hierarchy Viewer сбросить текущий видимый экран приложения и получить много информации от каждого из видов экрана, включая идентификатор ресурса , который является идентификатором вида, который вы хотите использовать в своем тесте.

Genynmotion не показывает идентификатор по какой-либо причине, но с настоящим устройством или эмулятором Android он должен работать.

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

  • Нет связанных вопросов^_^