UI-Überwachung¶
Überwachungen (Watcher) werden verwendet, um Änderungen der Benutzeroberfläche in Echtzeit zu überwachen und bei Erfüllung vordefinierter Bedingungen vordefinierte Aktionen auszuführen, wie z. B. das Klicken auf Elemente, das Drücken von Tasten oder das Zählen von Ereignissen. Sie können sich dies als die zugrunde liegende Implementierung von Funktionen wie Li Tiaotiao oder ähnlichen automatischen Werbe-Überspringungs-Tools vorstellen. Da diese Funktion automatisch Klick- oder Tastenaktionen ausführt, können bei manuellen Eingriffen unerwartete Aktionen auftreten. Bitte verwenden Sie sie daher mit Vorsicht.
Tipp
Überwachung aktivieren¶
Die folgende Schnittstelle aktiviert die UI-Überwachung. Standardmäßig ist die Überwachung deaktiviert.
Achtung
d.set_watcher_loop_enabled(True)
Status der Überwachung abrufen¶
Mit der folgenden Schnittstelle können Sie herausfinden, ob die aktuelle UI-Überwachung aktiviert ist.
d.get_watcher_loop_enabled()
Überwachung deaktivieren¶
Deaktiviert die Überwachungsschleife. Registrierte Ereignisse wie Klicks werden nicht mehr automatisch verarbeitet.
d.set_watcher_loop_enabled(False)
Achtung
Alle Überwachungen entfernen¶
Entfernt alle bereits angewendeten Überwachungsereignisse. Dadurch können Regeln, die von vorherigen oder abnormal beendeten Skripts angewendet wurden, gelöscht werden. Es wird empfohlen, dies vor jedem Skriptstart einmal auszuführen, um zu verhindern, dass von früheren Aufgaben registrierte Ereignisse den aktuellen normalen Verarbeitungsprozess beeinträchtigen.
d.remove_all_watchers()
Klick-Ereignis registrieren¶
Klick-Ereignisse führen automatisch Aktionen wie Klicks aus, wenn ein passender Selektor auf der Benutzeroberfläche erscheint. Beispiele hierfür sind das automatische Umgehen von Software-Pop-ups wie Nutzungsvereinbarungen oder Update-Hinweisen oder das automatische Klicken auf bestimmten Oberflächen.
Achtung
d.register_click_target_selector_watcher("ClickAcceptWhenShowAggrement", [Selector(textContains="用户协议")], Selector(textContains="同意", clickable=True))
Hinweis
Nach der Registrierung des obigen Ereignisses wird automatisch auf die Schaltfläche „Zustimmen“ geklickt, wenn eine Oberfläche mit dem Text „Benutzervereinbarung“ erscheint.
Tastendruck-Ereignis registrieren¶
Tastendruck-Ereignisse führen automatisch Tastenaktionen aus, wenn ein passender Selektor auf der Benutzeroberfläche erscheint, z. B. das automatische Zurückkehren, um das Betreten bestimmter Oberflächen zu vermeiden. Dieselbe Aktion kann natürlich auch mit Klick-Ereignissen erreicht werden.
Achtung
d.register_press_key_watcher("PressBackWhenHomePageShows", [Selector(textContains="个人中心")], Keys.KEY_HOME)
Hinweis
Nach der Registrierung des obigen Ereignisses wird automatisch die HOME-Taste des Telefons gedrückt, wenn eine Oberfläche mit dem Text „Persönliches Zentrum“ erscheint.
Zähl-Ereignis registrieren¶
Ein Zähl-Ereignis erhöht einen Zähler um 1, wenn eine Aktion mit einem passenden Selektor auf der Benutzeroberfläche erscheint. Wenn wichtige Informationen kurz auf dem Bildschirm aufblitzen, kann diese Funktion verwendet werden, um zu erfassen, ob bestimmte Oberflächen erschienen sind oder wie oft sie erschienen sind.
Achtung
d.register_none_op_watcher("RecordElementAppearTimes", [Selector(textContains="好的")])
Hinweis
Das obige Ereignis zählt, wie oft eine Oberfläche mit dem Text „OK“ erscheint. Verwenden Sie die folgende Schnittstelle, um die Anzahl der Auslösungen des Zähl-Ereignisses abzurufen.
d.get_watcher_triggered_count("RecordElementAppearTimes")
Ereignis aktivieren¶
Nachdem ein Ereignis registriert wurde, muss es aktiviert werden, um in die Schleife der UI-Überwachung aufgenommen zu werden, andernfalls wird es nicht angewendet.
Achtung
d.set_watcher_enabled("RecordElementAppearTimes", True)
Ereignis deaktivieren¶
Sie können die folgende Schnittstelle aufrufen, um die UI-Überwachung anzuweisen, ein bestimmtes Ereignis nicht mehr zu überwachen.
Achtung
d.set_watcher_enabled("RecordElementAppearTimes", False)
Ereignis entfernen¶
Entfernt ein Ereignis vollständig aus der Überwachung und löscht es gleichzeitig aus der Liste der registrierten Ereignisse.
d.remove_watcher(name)
Status der Ereignisaktivierung abrufen¶
Rufen Sie die folgende Schnittstelle auf, um zu überprüfen, ob das Ereignis korrekt aktiviert ist, um Fälle zu vermeiden, in denen es zwar registriert, aber nicht aktiviert ist.
d.get_watcher_enabled(name)
Erweiterte Selektoren¶
Neben einfachen Selektoren können Sie auch komplexere Selektoren für die Elementerkennung verwenden. Das folgende Beispiel zeigt, wie man einen komplexen Selektor schreibt.
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)
Vollständiger Beispielcode¶
Unten sehen Sie einen Beispiel-Codeblock, der die Überwachungsschleife aktiviert und drei Arten von Überwachungsereignissen registriert. Wenn eine Oberfläche mit dem Text „Benutzervereinbarung“ erscheint, wird automatisch auf „Zustimmen“ geklickt. Wenn eine Oberfläche mit dem Text „Persönliches Zentrum“ erscheint, wird sofort zum Startbildschirm zurückgekehrt. Wenn eine Oberfläche mit dem Text „OK“ erscheint, wird die Häufigkeit des Erscheinens dieser Oberfläche aufgezeichnet.
Achtung
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)