Как нажать на представление, которое содержит указанный текст, используя monkeyrunner и Android ViewClient?

Я пытаюсь смоделировать щелчок на планшете Android, используя бегун обезьян и Android ViewClient. Я хочу нажать на регион / вид, который имеет конкретный текст. Вот пример того, что я пытаюсь сделать:

  • У меня есть скрипт, куда я импортирую MonkeyRunner, MonkeyDevice, ViewClient
    from com.dtmilano.android.viewclient import ViewClient
    from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice

  • Подключите планшет и создайте объект MonkeyDevice
    device = MonkeyDevice.waitForConnection()

  • Используя устройство, я создаю объект Android ViewClient
    vc = ViewClient(device)

  • Я открываю приложение Настройки на своем планшетеdevice.startActivity('com.android.settings/.Settings')

  • Затем я нахожу желаемый вид, используя:
    displayView = findViewWithAttribute('text:mText', 'Display')

  • Затем я пытаюсь нажать на это представление (имитируя сенсорное событие):
    displayView.touch()

Проблема в том, что этот скрипт касается другой части экрана, где-то в левой части строки WiFi в приложении "Настройки".

Я просмотрел исходный код ViewClient и обнаружил, что метод touch() возвращает координаты (x,y) представления, а затем использует метод MonkeyDevice.touch(). Но возвращаемые координаты (x,y) относятся к родителю представления.

Кто-нибудь знает, как получить правильные (x,y) координаты объекта просмотра?
Или, по крайней мере, способ получить мнение родителей.

1 ответ

Решение

Задача решена. Последняя версия AndroidViewClient решает мою проблему с представлениями.

Я могу использовать:

view = vc.findViewWithText('Dsiplay')
view.touch()
Другие вопросы по тегам