Android-Espresso: Wie finde ich den letzten (Nichtlisten-) Tabelleneintrag und extrahiere Ansichtswerte?Android

Forum für diejenigen, die für Android programmieren
Anonymous
 Android-Espresso: Wie finde ich den letzten (Nichtlisten-) Tabelleneintrag und extrahiere Ansichtswerte?

Post by Anonymous »

Ich versuche, in Android -Espresso einzusteigen, und habe ein. APK, um Dinge auszuprobieren. Abgesehen von der Beinarbeit, wie ich es geschafft habe, den Test zum Laufen zu bringen, versuche ich jetzt herauszufinden, wie die Anzahl der Einträge in einer Tabelle ermittelt wird, und wie man Werte aus Ansichten extrahiert. Einträge. Für den Test möchte ich auf den letzten Eintrag klicken und seinen Text extrahieren, da die nächsten Schritte je nach Zahl geringfügig unterschiedlich sind.

Code: Select all

int tableId = context.getResources()
.getIdentifier("randomInts","id",context.getPackageName());
ViewInteraction table = onView(withId(tableId));
table.check(matches(isDisplayed()));
< /code>
Wenn ich den RowCount kannte, könnte ich einfach die folgende Anweisung mit der richtigen Nummer in WitharenIndex verwenden. < /p>
onView(allOf(
withParent(withId(itemRepo.id(itemRepo.idTableRandomInt))),
withClassName(containsString("TableRow")),
withParentIndex(40)
)).perform(scrollTo(), click());
< /code>
Viele der Fragen zum Thema verwenden Matcher, um die Kinderzahl mit einer bekannten erwarteten Größe zu vergleichen, aber ich kann dies aufgrund des zufälligen RowCount nicht verwenden. Ich habe versucht, die Ansichtsinteraktion in eine Listansicht umzuwandeln, aber das verursacht "Inconvertible types; cannot cast 'androidx.test.espresso.ViewInteraction' to 'android.widget.ListView'
".

Code: Select all

ListView tableView = (ListView) table;
int tablecount = tableView.getAdapter().getCount();
< /code>
Ebenso wird versucht, meine ID für das Tablelayout in den Matcher in dieser Frage zu geben. kann 'androidx.test.espresso.datainteraction' to 'android.widget.ListView' 

nicht gegossen werden.

Code: Select all

DataInteraction tablerows = onData(withId(tableId))
.inAdapterView(withClassName(containsString("TableRow")));
ListView tableList = (ListView) tablerows;
< /code>
Ich habe versucht, den Ansatz hier zu imitieren, aber Android Studio beschwerte sich, als ich ihn innerhalb der Testmethode platzierte und als ich ihn in derselben Klasse wie die Testmethode platzierte. Es landete in seiner eigenen Klasse, aber der veränderte Ansatz mit Tablerow.Class gibt 0 zurück und wäre unflexibel, selbst wenn es funktioniert. < /P>
public class Matchers {
private static int counter = 0;
public void resetCounter() {
counter = 0;
}

public static int getCounter() {
return counter;
}
public static Matcher countChildrenForParent(final Class classname) {
checkNotNull(classname);
return new TypeSafeMatcher() {
@Override
public void describeTo(Description description) {
description.appendText("with item id: " + classname);
}

@Override
public boolean matchesSafely(View view) {
if ((view.getClass() == classname)){
counter++;
return true;
}
return false;
}
};
}
}
< /code>
onView(Matchers.countChildrenForParent(TableRow.class));
Log.d("tag", "Matcher for table entries returned " + Matchers.getCounter());
< /code>
So as far as I can tell, I also won't be able to use a custom matcher to extract the random number from the last entry until I have figured this out.
I also noticed that the already identified randomInts has a "child-count=111" property, but I haven't seen a way to access these values so far.
TableLayout{id=2131231112, res-name=randomInts, visibility=VISIBLE, width=360, height=8655, has-focus=false, has-focusable=true, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, layout-params=android.widget.LinearLayout$LayoutParams@YYYYYY, tag=null, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, child-count=111}

Bearbeiten: Ich habe es geschafft, den Text der ersten Textansicht mit der Antwort auf diese Frage zu erhalten, und ich sollte hoffentlich in der Lage sein, diese Lösung später anzupassen, um die Hintergrundfarbe für einen anderen Teil der Übung zu erhalten und zu vergleichen.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post