Moniteur d'interface¶
Le moniteur est utilisé pour écouter en temps réel les changements de l'interface et exécuter des actions prédéfinies, telles que cliquer sur des éléments, appuyer sur des touches ou enregistrer le nombre d'occurrences, lorsque des conditions prédéfinies sont remplies. Vous pouvez le considérer comme l'implémentation sous-jacente de fonctionnalités similaires aux outils de saut automatique de publicités. Étant donné que cette fonctionnalité effectue automatiquement des clics ou des pressions de touches, des actions inattendues peuvent se produire lorsqu'une intervention manuelle est nécessaire. Veuillez donc l'utiliser avec prudence.
Conseil
Activer le moniteur¶
L'interface suivante activera le moniteur d'interface. Par défaut, le moniteur est désactivé.
Attention
d.set_watcher_loop_enabled(True)
Obtenir l'état d'activation du moniteur¶
Vous pouvez utiliser l'interface suivante pour savoir si le moniteur d'interface est actuellement activé.
d.get_watcher_loop_enabled()
Désactiver le moniteur¶
Désactive la boucle du moniteur, ce qui empêchera le traitement automatique des événements enregistrés tels que les clics.
d.set_watcher_loop_enabled(False)
Attention
Supprimer tous les moniteurs¶
Supprime tous les événements de surveillance déjà appliqués, ce qui permet de nettoyer les règles appliquées par des scripts précédents ou interrompus anormalement. Il est recommandé d'exécuter cette commande avant chaque démarrage de script pour éviter que les événements enregistrés par des tâches antérieures n'interfèrent avec le processus de traitement actuel.
d.remove_all_watchers()
Enregistrer un événement de clic¶
L'événement de clic effectuera automatiquement des opérations de clic lorsqu'un sélecteur correspondant apparaît sur l'interface. Par exemple, pour contourner automatiquement les fenêtres contextuelles de logiciels telles que les accords d'utilisation ou les notifications de mise à jour, ou pour effectuer des clics automatiques sur certaines interfaces spécifiques.
Attention
d.register_click_target_selector_watcher("ClickAcceptWhenShowAggrement", [Selector(textContains="用户协议")], Selector(textContains="同意", clickable=True))
Astuce
En enregistrant l'événement ci-dessus, lorsque l'interface contenant le texte « 用户协议 » (Accord d'utilisation) apparaît, le bouton « 同意 » (Accepter) sera automatiquement cliqué.
Enregistrer un événement de pression de touche¶
L'événement de pression de touche effectuera automatiquement une action de touche lorsqu'un sélecteur correspondant apparaît sur l'interface, comme un retour automatique, ce qui peut éviter d'entrer dans certaines interfaces. Bien sûr, un événement de clic peut également être utilisé pour réaliser la même opération.
Attention
d.register_press_key_watcher("PressBackWhenHomePageShows", [Selector(textContains="个人中心")], Keys.KEY_HOME)
Astuce
En enregistrant l'événement ci-dessus, lorsque l'interface contenant le texte « 个人中心 » (Centre personnel) apparaît, la touche HOME du téléphone sera automatiquement pressée.
Enregistrer un événement de comptage¶
L'événement de comptage incrémente un compteur de 1 lorsque des éléments correspondant à certains sélecteurs apparaissent sur l'interface. Lorsque des informations importantes apparaissent brièvement à l'écran, cette fonctionnalité peut être utilisée pour vérifier si certaines interfaces sont apparues et combien de fois.
Attention
d.register_none_op_watcher("RecordElementAppearTimes", [Selector(textContains="好的")])
Astuce
L'événement ci-dessus enregistre le nombre d'apparitions de l'interface contenant « 好的 » (OK). Utilisez l'interface suivante pour obtenir le nombre de déclenchements de cet événement de comptage.
d.get_watcher_triggered_count("RecordElementAppearTimes")
Activer un événement¶
Une fois un événement enregistré, il doit être activé pour être pris en compte par la boucle du moniteur d'interface, sinon il ne sera pas appliqué.
Attention
d.set_watcher_enabled("RecordElementAppearTimes", True)
Désactiver un événement¶
Vous pouvez appeler l'interface suivante pour que le moniteur d'interface cesse de surveiller un événement spécifique.
Attention
d.set_watcher_enabled("RecordElementAppearTimes", False)
Supprimer un événement¶
Supprime complètement un événement du moniteur, et il sera également retiré de la liste des événements enregistrés.
d.remove_watcher(name)
Obtenir l'état d'activation d'un événement¶
Appelez l'interface suivante pour vérifier si un événement est correctement activé, afin d'éviter les cas où un événement est enregistré mais pas activé.
d.get_watcher_enabled(name)
Sélecteur avancé¶
En plus des sélecteurs simples, vous pouvez également fournir des sélecteurs plus complexes pour la correspondance d'éléments. L'exemple suivant montre comment écrire un sélecteur complexe.
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)
Exemple de code complet¶
Voici un bloc de code d'exemple qui active la boucle du moniteur et enregistre trois types d'événements de surveillance. Lorsque du texte contenant « 用户协议 » (Accord d'utilisation) apparaît à l'écran, il clique automatiquement sur Accepter. Lorsque du texte contenant « 个人中心 » (Centre personnel) apparaît, il retourne immédiatement à l'écran d'accueil. Lorsque du texte contenant « 好的 » (OK) apparaît, il enregistre le nombre d'apparitions de cette interface.
Attention
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="好的")])
d.set_watcher_enabled("ClickAcceptWhenShowAggrement", True)
d.set_watcher_enabled("PressBackWhenHomePageShows", True)
d.set_watcher_enabled("RecordElementAppearTimes", True)