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

Normalerweise sollten die Überwachung und die Ereignisregistrierung ganz am Anfang des Skripts erfolgen und während der Ausführung im Allgemeinen nicht wiederholt werden.

Überwachung aktivieren

Die folgende Schnittstelle aktiviert die UI-Überwachung. Standardmäßig ist die Überwachung deaktiviert.

Achtung

Aktionen für passende Ereignisse, die auf der Benutzeroberfläche auftreten, bevor die Überwachung oder ein Überwachungsereignis aktiviert wird, werden nicht verarbeitet!
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

Die Registrierung zu vieler Überwachungsereignisse kann die Systemleistung oder die Echtzeitfähigkeit beeinträchtigen.

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

Aktionen für passende Ereignisse, die auf der Benutzeroberfläche auftreten, bevor die Überwachung oder ein Überwachungsereignis aktiviert wird, werden nicht verarbeitet!
d.register_click_target_selector_watcher("ClickAcceptWhenShowAggrement", [Selector(textContains="用户协议")], Selector(textContains="同意", clickable=True))

Hinweis

Der zweite Parameter unterstützt mehrere Selektoren. Das bedeutet, dass die Ereignisbehandlung nur dann erfolgt, wenn alle Selektor-Bedingungen erfüllt sind.

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

Aktionen für passende Ereignisse, die auf der Benutzeroberfläche auftreten, bevor die Überwachung oder ein Überwachungsereignis aktiviert wird, werden nicht verarbeitet!
d.register_press_key_watcher("PressBackWhenHomePageShows", [Selector(textContains="个人中心")], Keys.KEY_HOME)

Hinweis

Der zweite Parameter unterstützt mehrere Selektoren. Das bedeutet, dass die Ereignisbehandlung nur dann erfolgt, wenn alle Selektor-Bedingungen erfüllt sind.

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

Aktionen für passende Ereignisse, die auf der Benutzeroberfläche auftreten, bevor die Überwachung oder ein Überwachungsereignis aktiviert wird, werden nicht verarbeitet!
d.register_none_op_watcher("RecordElementAppearTimes", [Selector(textContains="好的")])

Hinweis

Der zweite Parameter unterstützt mehrere Selektoren. Das bedeutet, dass die Ereignisbehandlung nur dann erfolgt, wenn alle Selektor-Bedingungen erfüllt sind.

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

Aktionen für passende Ereignisse, die auf der Benutzeroberfläche auftreten, bevor die Überwachung oder ein Überwachungsereignis aktiviert wird, werden nicht verarbeitet!
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

Aktionen für passende Ereignisse, die auf der Benutzeroberfläche auftreten, bevor die Überwachung oder ein Überwachungsereignis aktiviert wird, werden nicht verarbeitet!
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

Aktionen für passende Ereignisse, die auf der Benutzeroberfläche auftreten, bevor die Überwachung oder ein Überwachungsereignis aktiviert wird, werden nicht verarbeitet!
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)