Chcę uzyskać ciąg tekstowy wyświetlany w widoku tekstowym w LinearLayout. czy może to zrobić espresso? Jeśli nie, czy jest inny sposób, aby to zrobić, czy mogę użyć apia Android w teście espresso? Używam API 17 18 lub nowszego, espresso 1.1 (powinien być najnowszy). Nie mam o tym pojęcia. Dzięki.Jak uzyskać tekst z widoku tekstowego przy użyciu espresso
Odpowiedz
Podstawową ideą jest użycie metody z wewnętrzną ViewAction, która pobiera tekst w swojej metodzie wykonywania. Anonimowe klasy mają dostęp tylko do pól końcowych, więc nie możemy pozwolić, aby ustawiono lokalną zmienną getText(), ale zamiast tego tablica String jest używana do wyciągnięcia łańcucha z ViewAction.
String getText(final Matcher<View> matcher) {
final String[] stringHolder = { null };
onView(matcher).perform(new ViewAction() {
@Override
public Matcher<View> getConstraints() {
return isAssignableFrom(TextView.class);
}
@Override
public String getDescription() {
return "getting text from a TextView";
}
@Override
public void perform(UiController uiController, View view) {
TextView tv = (TextView)view; //Save, because of check in getConstraints()
stringHolder[0] = tv.getText().toString();
}
});
return stringHolder[0];
}
Uwaga: Ten rodzaj retrieverów przeglądania danych należy stosować z ostrożnością. Jeśli ciągle odkrywasz, że piszesz tego rodzaju metody, istnieje duża szansa, że robisz coś złego przed rozpoczęciem. Nie należy też nigdy uzyskiwać dostępu do widoku poza numerem ViewAssertion
lub ViewAction
, ponieważ tylko tam jest zapewnione, że interakcja jest bezpieczna, ponieważ jest uruchamiana z wątku interfejsu użytkownika, a przed wykonaniem jest sprawdzana, że żadne inne interakcje nie mieszają się.
Jeśli chcesz sprawdzić wartość tekstu za pomocą innego tekstu, możesz utworzyć Matchera. Możesz zobaczyć mój kod, aby utworzyć własną metodę:
public static Matcher<View> checkConversion(final float value){
return new TypeSafeMatcher<View>() {
@Override
protected boolean matchesSafely(View item) {
if(!(item instanceof TextView)) return false;
float convertedValue = Float.valueOf(((TextView) item).getText().toString());
float delta = Math.abs(convertedValue - value);
return delta < 0.005f;
}
@Override
public void describeTo(Description description) {
description.appendText("Value expected is wrong");
}
};
}
- 1. Jak uzyskać tekst z "datacell" HTML przy użyciu BeautifulSoup
- 2. Jak narysować tekst w niestandardowym widoku przy użyciu Objective-C?
- 3. Dodaj tekst do pola tekstowego przy użyciu javascript
- 4. Jak uzyskać zaznaczony tekst z obszaru tekstowego w jquery?
- 5. Jak uzyskać wpisany tekst z pola tekstowego w selen
- 6. Jak zwracać unikalne słowa z pliku tekstowego przy użyciu Python
- 7. Wysublimowany tekst: Jak uzyskać nazwę bieżącego widoku
- 8. C# - Zapisywanie dziennika przy użyciu pola tekstowego
- 9. Zniknąć dno widoku tekstowego android
- 10. Jak uzyskać dostęp do elementów na zewnętrznej stronie internetowej przy użyciu espresso
- 11. Pierwsze wartość tekst z obiektu tekstowego w JavaScript
- 12. Jak wstawić tekst przy użyciu XElement
- 13. Czyszczenie zawartości pliku tekstowego przy użyciu C#
- 14. Tworzenie nowego pliku tekstowego przy użyciu heredoc
- 15. Przesyłanie do widoku szczegółów z komórki widoku tabeli przy użyciu Xcode Storyboard
- 16. odczytać pliku Tekst programowo przy użyciu Objective-C
- 17. Usuwanie tła widoku tekstowego
- 18. jak wyodrębnić tekst główny z html przy użyciu Tika
- 19. jak wyciągnąć tekst z kolorem tła przy użyciu płótna
- 20. Jak uzyskać tekst z SearchView?
- 21. jak uzyskać tekst z TextView
- 22. Wyciąganie kolumny z pliku tekstowego przy użyciu PowerShell
- 23. Kopiowanie z jednego pliku tekstowego na inny przy użyciu Python
- 24. Jak "skrócić" tekst wewnątrz widoku tekstowego w Androidzie zgodnie z orientacją?
- 25. Espresso z tekstem w widoku tekstowym nie pasuje do wybranego widoku
- 26. Wyodrębnianie wyrażeń rzeczownikowych z pliku tekstowego przy użyciu parsera wpisanego w stanford
- 27. Espresso: widok z recyklingu przewiń do końca
- 28. Otrzymuj dane wejściowe z klawiatury bez pola tekstowego/widoku
- 29. Automatyczne ustawianie następnego widoku tekstowego:
- 30. Znajdź wartość z widoku danych przy użyciu nazwy kolumny
Tak, espresso może to zrobić, jeśli jest w hacky sposób. Ale najczęściej nie powinieneś tego robić, ponieważ w testach zazwyczaj chcesz porównać tekst w tekście z danym tekstem lub przetestować jakąś jego własność. Więcej szczegółów na temat tego, co faktycznie próbujesz zrobić w teście, łatwiej jest udzielić pomocnej odpowiedzi. – haffax
Cóż, czym właściwie jest hacky? Jak to zrobić? Muszę uzyskać tekst do wstawienia do raportu. Dziękujemy za uwagę, @haffax –