Próbuję zidentyfikować macierzysty widok elementu interfejsu użytkownika, aby móc swobodnie poruszać się po interfejsie użytkownika.Jak mogę uzyskać nadrzędny widok za pomocą uiautomator?
Na przykład w aplikacji Ustawienia, mogę znaleźć widok z tekstem „Bluetooth”:
UiObject btView = new UiObject(new UiSelector().text("Bluetooth"));
Teraz część, gdzie utkniesz jest to jedno: chcę, aby poruszać się na dwóch poziomach i Rozpocznij nowe wyszukiwanie przycisku włączania/wyłączania, który włącza i wyłącza bluetooth.
Uwaga: Mogę uzyskać przycisk, jeśli użyję poniższego kodu.
UiObject btButtonView = new UiObject(new UiSelector().className("android.widget.Switch").instance(1));
Poszukuje przycisków przełącznika i zwraca drugie spotkanie. Chcę, aby wyszukiwanie było bardziej precyzyjne i poszukaj przycisku w układzie liniowym, który zawiera tekst "Bluetooth".
UPDATE: Jest to układ z aplikacji Settings (część Bluetooth że muszę):
LinearLayout
LinearLayout
ImageView
RelativeLayout
TextView (with text = "Bluetooth")
Switch()
Ta metoda również nie działa. UiObject dwa poziomy w górę to LinearLayout, ale nie ma atrybutu tekstowego. Nie mogę go zidentyfikować po tekście "Bluetooth". Zaktualizował pytanie z faktycznym układem aplikacji. –
To działa. Nie identyfikujesz się przez tekst LinearLayout. "Wyszukuje każde dziecko pasujące do argumentu childPattern, który ma element podrzędny UI w dowolnym miejscu w swojej podrzędnej hierarchii, który ma atrybut tekstowy równy tekstowi." Innymi słowy, szukasz LinearLayout, który ma dziecko z tekstem Bluetooth. – Anders
Tak, to działa. Wygląda na to, że zrobiłem coś złego za pierwszym razem. –