Я пытаюсь определить родительский вид элемента ui, чтобы свободно перемещаться по пользовательскому интерфейсу.Как получить родительский элемент представления с помощью uiautomator?
Например, в настройках приложения, я могу найти представление с текстом «Bluetooth»:
UiObject btView = new UiObject(new UiSelector().text("Bluetooth"));
Теперь та часть, где я застрял этот один: я хочу, чтобы перейти на два уровня вверх и начните новый поиск кнопки включения/выключения, которая включает и отключает Bluetooth.
Примечание: я могу получить кнопку, если я воспользуюсь приведенным ниже кодом.
UiObject btButtonView = new UiObject(new UiSelector().className("android.widget.Switch").instance(1));
Выполняет поиск кнопок переключателя и возвращает вторую встречу. Я хочу, чтобы поиск был более точным, и найдите кнопку в линейной компоновке, которая содержит текст «Bluetooth».
UPDATE: Это расположение настройки приложения (часть Bluetooth, что мне нужно):
LinearLayout
LinearLayout
ImageView
RelativeLayout
TextView (with text = "Bluetooth")
Switch()
Этот метод также не работает. Два уровня UiObject - это LinearLayout, но он не имеет текстового атрибута. Поэтому я не могу идентифицировать его по тексту «Bluetooth». Обновлен вопрос с фактическим расположением приложения. –
Это действительно работает. Вы не идентифицируете текст LinearLayout. «Он ищет любого дочернего элемента, соответствующего аргументу childPattern, который имеет дочерний элемент пользовательского интерфейса в любом месте своей иерархии, который имеет текстовый атрибут, равный тексту». Другими словами, вы ищете LinearLayout, у которого есть ребенок с текстом Bluetooth. – Anders
Да, это работает. Кажется, я сделал что-то неправильно в первый раз. –