我如何从ID中提取文本?
在我的测试中,
我检查我登陆的每个页面的标题文本。
例如,我可以将文本与“登录”(例如R.id.toolbar_text
)相匹配,查看它是否通过或失败。 但是,我想知道它是否失败,我在R.id.toolbar_text
对象中有什么文本。
在Espresso Android中可以使用getText()
选项吗?
我如何从ID中提取文本?
试试这个(kotlin例子):
val toolbar: ViewInteraction = onView(withId(R.id.toolbar_text)) fun getText(viewInteraction: ViewInteraction): String? { val stringHolder = arrayOf(null) viewInteraction.perform(object : ViewAction { override fun getConstraints() = isAssignableFrom(TextView::class.java) override fun getDescription() = "Get text from View: ${stringHolder[0]}" override fun perform(uiController: UiController, view: View) { val tv = view as TextView stringHolder[0] = tv.text.toString() } }) return stringHolder[0] } val text = getText(toolbar)
下面是Java中getText()的等效实现:
public static String getText(final Matcher matcher) { try { final String[] stringHolder = {null}; onView(matcher).perform(new ViewAction() { @Override public Matcher getConstraints() { return isAssignableFrom(TextView.class); } @Override public String getDescription() { return "get text"; } @Override public void perform(UiController uiController, View view) { TextView tv = (TextView) view; stringHolder[0] = tv.getText().toString(); } }); if (stringHolder[0] == null || stringHolder[0] == "") { fail("no text found"); } return stringHolder[0]; } catch (Exception e) { fail("null found"); return null; } }
- 如何写while循环与在kotlin中的responseInputStream.read – (while((i = responseInputStream.read(byteContainer))
- 内部类inheritanceKotlin
- 点击边界/坐标
- 从1.0.2 – 1.0.3升级Kotlin:java.lang.NoSuchMethodError:没有虚方法provideInjectedData $ app_compileDebugKotlin()
- 应用; 曾经使用过不同的AppComponent; 在预先验证期间
- kotlin +特浓咖啡:找不到活动
- Android Espresso – 如何查看视图在活动结束前匹配?
- 在测试活动的onCreate期间开始使用Espresso来存根意图
- Google Espresso:删除每个测试的用户数据
- java.lang.NoClassDefFoundError:kotlin.jvm.internal.Intrinsics – newApplication
- 用MVP + Dagger进行Android测试2