gpt4 book ai didi

android - Espresso - 获取元素的文本

转载 作者:太空宇宙 更新时间:2023-11-03 12:14:30 26 4
gpt4 key购买 nike

如果我有一个可以通过以下方式访问的“AppCompatTextView”元素:

onView(withId(R.id.allergies_text))

来自布局检查器:

enter image description here

有没有办法可以访问 Android Studio 中元素的文本? (访问那里的任何文本......不检查元素中是否存在某些文本)

我尝试过:

val tv = onView(withId(R.id.medical_summary_text_view)) as TextView
val text = text.text.toString()
print(text)

但是我得到了错误:

android.support.test.espresso.ViewInteraction 无法转换为 android.widget.TextView

最佳答案

您应该创建一个匹配器来访问该元素值。

例如,你可以检查它的文本是否有一些值:

Matcher<View> hasValueEqualTo(final String content) {

return new TypeSafeMatcher<View>() {

@Override
public void describeTo(Description description) {
description.appendText("Has EditText/TextView the value: " + content);
}

@Override
public boolean matchesSafely(View view) {
if (!(view instanceof TextView) && !(view instanceof EditText)) {
return false;
}
if (view != null) {
String text;
if (view instanceof TextView) {
text = ((TextView) view).getText().toString();
} else {
text = ((EditText) view).getText().toString();
}

return (text.equalsIgnoreCase(content));
}
return false;
}
};
}

这样调用它:

onView(withId(R.id.medical_summary_text_view))
.check(matches(hasValueEqualTo(value)));

或者您可以编辑此匹配器以仅返回文本是否为空:

Matcher<View> textViewHasValue() {

return new TypeSafeMatcher<View>() {

@Override
public void describeTo(Description description) {
description.appendText("The TextView/EditText has value");
}

@Override
public boolean matchesSafely(View view) {
if (!(view instanceof TextView) && !(view instanceof EditText)) {
return false;
}
if (view != null) {
String text;
if (view instanceof TextView) {
text = ((TextView) view).getText().toString();
} else {
text = ((EditText) view).getText().toString();
}

return (!TextUtils.isEmpty(text));
}
return false;
}
};
}

这样调用它:

onView(withId(R.id.medical_summary_text_view))
.check(matches(textViewHasValue()));

关于android - Espresso - 获取元素的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45597008/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com