Монитор интерфейса¶
Монитор используется для отслеживания изменений в интерфейсе в реальном времени и выполнения предопределенных действий, таких как клики по элементам, нажатия клавиш или подсчет событий, при выполнении заданных условий. Вы можете представить это как базовую реализацию функций, подобных Li Tiaotiao (приложение для автоматического пропуска рекламы). Поскольку эта функция автоматически выполняет клики или нажатия клавиш, при необходимости ручного вмешательства могут произойти непредвиденные действия, поэтому используйте ее с осторожностью.
Совет
Включение монитора¶
Следующий интерфейс включает монитор интерфейса. По умолчанию монитор отключен.
Внимание
d.set_watcher_loop_enabled(True)
Получение статуса монитора¶
Вы можете использовать следующий интерфейс, чтобы узнать, включен ли в данный момент монитор интерфейса.
d.get_watcher_loop_enabled()
Отключение монитора¶
Отключает цикл монитора, после чего зарегистрированные события, такие как клики, больше не будут обрабатываться автоматически.
d.set_watcher_loop_enabled(False)
Внимание
Удаление всех мониторов¶
Удаляет все примененные события мониторинга, что позволяет очистить правила, примененные предыдущими или аварийно завершенными скриптами. Рекомендуется выполнять эту операцию перед каждым запуском скрипта, чтобы предотвратить влияние событий, зарегистрированных предыдущими задачами, на текущий процесс выполнения.
d.remove_all_watchers()
Регистрация события клика¶
Событие клика автоматически выполняет действия, такие как клик, когда на экране появляется соответствующий селектор. Например, для автоматического обхода всплывающих окон, таких как пользовательские соглашения или уведомления об обновлениях, или для автоматических кликов на определенных экранах.
Внимание
d.register_click_target_selector_watcher("ClickAcceptWhenShowAggrement", [Selector(textContains="Пользовательское соглашение")], Selector(textContains="Согласен", clickable=True))
Подсказка
После регистрации вышеуказанного события, при появлении на экране текста "Пользовательское соглашение", будет автоматически нажата кнопка "Согласен".
Регистрация события нажатия клавиши¶
Событие нажатия клавиши автоматически выполняет действие нажатия клавиши, когда на экране появляется соответствующий селектор. Например, автоматический возврат, чтобы избежать входа на определенные экраны. Конечно, ту же операцию можно реализовать и с помощью события клика.
Внимание
d.register_press_key_watcher("PressBackWhenHomePageShows", [Selector(textContains="Личный кабинет")], Keys.KEY_HOME)
Подсказка
После регистрации вышеуказанного события, при появлении на экране текста "Личный кабинет", будет автоматически нажата клавиша HOME на телефоне.
Регистрация события подсчета¶
Событие подсчета увеличивает счетчик на 1, когда на экране появляется элемент, соответствующий селектору. Эту функцию можно использовать для отслеживания появления определенных экранов или подсчета количества их появлений, особенно когда важная информация появляется на экране на короткое время.
Внимание
d.register_none_op_watcher("RecordElementAppearTimes", [Selector(textContains="OK")])
Подсказка
Вышеуказанное событие регистрирует количество появлений экрана, содержащего "OK". Используйте следующий интерфейс для получения количества срабатываний события подсчета.
d.get_watcher_triggered_count("RecordElementAppearTimes")
Включение события¶
После регистрации события его необходимо включить, чтобы оно было добавлено в цикл монитора интерфейса, иначе оно не будет применяться.
Внимание
d.set_watcher_enabled("RecordElementAppearTimes", True)
Отключение события¶
Вы можете вызвать следующий интерфейс, чтобы монитор интерфейса прекратил отслеживание определенного события.
Внимание
d.set_watcher_enabled("RecordElementAppearTimes", False)
Удаление события¶
Полностью удаляет событие из монитора, а также из списка зарегистрированных событий.
d.remove_watcher(name)
Получение статуса события¶
Вызовите следующий интерфейс, чтобы проверить, правильно ли включено событие, и избежать ситуации, когда оно зарегистрировано, но не включено.
d.get_watcher_enabled(name)
Продвинутые селекторы¶
Помимо простых селекторов, вы также можете использовать более сложные селекторы для сопоставления элементов. Ниже приведен пример написания сложного селектора.
d.register_press_key_watcher("PressBackWhenHomePageShows", [Selector(resourceId="com.android.market:id/v_app_item").child(index=3).sibling(index=2).child(index=2).child()], Keys.KEY_HOME)
Полный пример кода¶
Ниже приведен пример блока кода, который включает цикл монитора и регистрирует три типа событий мониторинга. Когда на экране появляется текст "Пользовательское соглашение", автоматически нажимается кнопка "Согласен". Когда появляется текст "Личный кабинет", происходит немедленный возврат на главный экран. Когда появляется текст "OK", регистрируется количество появлений этого экрана.
Внимание
d.remove_all_watchers()
d.set_watcher_loop_enabled(True)
d.register_click_target_selector_watcher("ClickAcceptWhenShowAggrement", [Selector(textContains="Пользовательское соглашение")],
Selector(textContains="Согласен", clickable=True))
d.register_press_key_watcher("PressBackWhenHomePageShows", [Selector(textContains="Личный кабинет")], Keys.KEY_HOME)
d.register_none_op_watcher("RecordElementAppearTimes", [Selector(textContains="OK")])
d.set_watcher_enabled("ClickAcceptWhenShowAggrement", True)
d.set_watcher_enabled("PressBackWhenHomePageShows", True)
d.set_watcher_enabled("RecordElementAppearTimes", True)