WindowsAppEnv
Die Anwendungsfälle für die Klasse WindowsAppEnv sind wie folgt:
- Öffnen eines angegebenen Dokuments.
- Abgleichen von Dokumentfenstern mithilfe verschiedener Strategien (
contains,fuzzyundregex). - Abgleichen der Steuerelemente, die für jeden Schritt im instanziierten Plan erforderlich sind, mithilfe verschiedener Strategien (
contains,fuzzyundregex). - Schließen eines angegebenen Dokuments.
Die folgenden Abschnitte bieten eine detaillierte Erklärung der Abgleichstrategien für Fenster und Steuerelemente sowie ihrer Verwendungsmethoden.
Abgleichstrategien
In der Klasse WindowsAppEnv sind Abgleichstrategien Regeln, die bestimmen, wie window- oder control-Namen mit einem gegebenen Dokumentnamen oder Zieltext übereinstimmen. Basierend auf der Konfigurationsdatei können drei verschiedene Abgleichstrategien ausgewählt werden: contains, fuzzy und regex.
- Der
Contains-Abgleich ist die einfachste Strategie und eignet sich, wenn die Fenster- und Dokumentnamen exakt übereinstimmen. - Der
Fuzzy-Abgleich ist flexibler und kann auch bei Tippfehlern oder teilweisen Übereinstimmungen zwischen dem Fenstertitel und dem Dokumentnamen übereinstimmen. - Der
Regex-Abgleich bietet die größte Flexibilität und ist ideal für komplexe Abgleichmuster in Fenstertiteln.
1. Beispiel für Fensterabgleich
Die Methode find_matching_window ist für den Abgleich von Fenstern basierend auf der konfigurierten Abgleichstrategie zuständig. Hier ist, wie Sie sie verwenden können, um ein Fenster zu finden, indem Sie einen Dokumentnamen angeben.
Beispiel
# Initialize your application object (assuming app_object is already defined)
app_env = WindowsAppEnv(app_object)
# Define the document name you're looking for
doc_name = "example_document_name"
# Call find_matching_window to find the window that matches the document name
matching_window = app_env.find_matching_window(doc_name)
if matching_window:
print(f"Found matching window: {matching_window.element_info.name}")
else:
print("No matching window found.")
Erklärung
app_env.find_matching_window(doc_name)durchsucht alle geöffneten Fenster und gleicht den Fenstertitel anhand der in der Konfiguration definierten Strategie (contains, fuzzy oder regex) ab.- Wenn eine Übereinstimmung gefunden wird, enthält das Objekt
matching_windowdas übereinstimmende Fenster, und Sie können den Namen des Fensters ausgeben. - Wenn keine Übereinstimmung gefunden wird, wird
Nonezurückgegeben.
2. Beispiel für Steuerelementabgleich
Um ein passendes Steuerelement innerhalb eines Fensters zu finden, können Sie die Methode find_matching_controller verwenden. Diese Methode erfordert ein Wörterbuch mit gefilterten Steuerelementen und einen abzugleichenden Steuerelementtext.
Beispiel
# Initialize your application object (assuming app_object is already defined)
app_env = WindowsAppEnv(app_object)
# Define a filtered annotation dictionary of controls (control_key, control_object)
# Here, we assume you have a dictionary of UIAWrapper controls from a window.
filtered_annotation_dict = {
1: some_control_1, # Example control objects
2: some_control_2, # Example control objects
}
# Define the control text you're searching for
control_text = "submit_button"
# Call find_matching_controller to find the best match
controller_key, control_selected = app_env.find_matching_controller(filtered_annotation_dict, control_text)
if control_selected:
print(f"Found matching control with key {controller_key}: {control_selected.window_text()}")
else:
print("No matching control found.")
Erklärung
filtered_annotation_dictist ein Wörterbuch, in dem der Schlüssel die ID des Steuerelements und der Wert das Steuerelementobjekt (UIAWrapper) darstellt.control_textist der Text, nach dem Sie in diesen Steuerelementen suchen.app_env.find_matching_controller(filtered_annotation_dict, control_text)berechnet den Übereinstimmungs-Score für jedes Steuerelement basierend auf der definierten Strategie und gibt das Steuerelement mit dem höchsten Übereinstimmungs-Score zurück.- Wenn eine Übereinstimmung gefunden wird, werden das Steuerelementobjekt (
control_selected) und sein Schlüssel (controller_key) zurückgegeben, die für weitere Interaktionen verwendet werden können.
Referenz
Stellt die Windows-Anwendungsumgebung dar.
Initialisiert die Windows-Anwendungsumgebung.
| Parameter |
|
|---|
Quellcode in env/env_manager.py
29 30 31 32 33 34 35 36 37 38 | |
close()
Versucht, die Anwendung ordnungsgemäß zu schließen; wenn dies fehlschlägt oder nicht geschlossen wird, wird der Prozess zwangsweise beendet.
Quellcode in env/env_manager.py
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | |
find_matching_controller(filtered_annotation_dict, control_text)
Wählt das am besten passende Steuerelement aus.
| Parameter |
|
|---|
| Rückgabe |
|
|---|
Quellcode in env/env_manager.py
157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 | |
find_matching_window(doc_name)
Findet ein passendes Fenster basierend auf dem Prozessnamen und der konfigurierten Abgleichstrategie.
| Parameter |
|
|---|
| Rückgabe |
|
|---|
Quellcode in env/env_manager.py
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | |
start(copied_template_path)
Startet die Windows-Umgebung.
| Parameter |
|
|---|
Quellcode in env/env_manager.py
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | |