1

のテキストを取得エスプレッソは私がしてアクセスできる「AppCompatTextView」の要素を持っている場合は要素

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にキャストすることはできません。

答えて

2

その要素値にアクセスするには、マッチャを作成する必要があります。

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())); 
関連する問題