4

我正在尝试使用 Android Espresso 对第 3 方 apk 文件进行黑盒测试。我无权访问第 3 方 apk 文件的源代码。

所以,我可以使用UIAutomatorViewer. 但是,在 Espresso 文件中,我无权访问“R”。

所以当我打电话时onView(withId(R.id.<ui id>)),它会返回一个错误:

包 R 不存在

例子:

onView(withId(R.id.fragment_onboarding_skip_button)).perform(click());
4

1 回答 1

2

它可以通过创建一个从 ID 名称中提取整数 ID 的方法来解决:

...    
public int getId(String id) {
    Context appContext = InstrumentationRegistry.getTargetContext();
    return appContext.getResources().getIdentifier(id, "id", "<applicationId>");
}

@Test
public void testSomething() {
    //here just pass the ID name
    onView(withId(getId("fragment_onboarding_skip_button"))).perform(click());
}
...
于 2018-03-26T16:59:02.147 回答