This is UltimateRPA Documentation
Třída Condition factory

Vytvoření podmínek pro vyhledání elementu GUI

Instance třídy Condition se používá jako parametr v metodách, které slouží k vyhledání elementu GUI v robotizované aplikaci, např. v metodě find_first. Nad vyhledanými elementy GUI lze následně nasimulovat činnost myší nebo klávesnicí. Instance třídy Condition se vytváří pomocí třídy ConditionFactory. Každá instance třídy Condition obsahuje interní proměnné Name, Value, Control type, Item type, Access key, Automation id, Class name a Size, které obsahují podmínky pro vyhledávání elementů GUI.

Spuštění testovací aplikace RpaTableTest

V adresaři UltimateRPA Tools spustíme PyScripter.exe a otevře se nám vývojářské prostředí PyScripter. Vytvoříme si nový soubor, resp. robotizační skript. V menu File si vybereme New a potom New Python module nebo použijeme klávesovou zkratku (CTRL + N) a soubor si uložíme jako condition_factory.py (CTRL + S). Jako první si přidáme do robotizačního skriptu modul UltimateRPA a nadefinujeme instanci třídy ConditionFactory cf. Dále definujeme hlavní funkci main, ve které pomocí funkce exec_app spustíme aplikaci RpaTableTest. Pro zvýraznění nalezených objektů v průběhu zpracování robotizačního skriptu zapneme debuggovací režim a to pomocí funkce set_debug_mode.

RpaTableTest.png
Obrázek 1 Okno aplikace RpaTableTest
import urpa
def main():
app = urpa.exec_app("TutorialApps/RpaTableTest.exe")

Cesta k aplikaci "TutorialApps/RpaTableTest.exe" je relativní od umístění spouštěného skriptu a předpokládá, že skript je uložený v hlavní složce s nástroji UltimateRPA. Pokud je váš skript uložený jinde, nezapomeňte cestu upravit.

Skript si spustíme. V menu PyScripteru vybereme Run a dále External Run nebo můžeme použít klávesovou zkratku (ALT + F9). Aplikace RpaTableTest se spustí a zavře, resp. problikne na ploše.

Vytvoření jednoduché podmínky

Ručně spustíme aplikaci Inspector a aplikaci RpaTableTest. Ve výběrovém poli Search function aplikace Inspector nastavíme hodnotu (none). Zaměřovač Inspectoru přetáhneme nad aplikaci RpaTableTest, konkrétně nad tlačítko Delete selected lines a uvolníme levé tlačítko myši. V aplikaci Inspector dojde k aktualizaci hodnot ve sloupci Value. V aplikaci Inspector aktivujeme zaškrtávací pole v řádku s atributem Name-Name a Value-Delete selected lines. Po aktivaci zaškrtávacího pole dojde k vytvoření výrazu pro vyhledání elementu GUI v editboxu Expression ve spodní části dialogu Inspector. Výraz, který reprezentuje novou instanci objektu Condition, přeneseme pomocí systémového clipboardu do robotizačního skriptu. V robotizačním skriptu nadefinujeme novou instanci třídy Condition condition_delete. Následně lze tuto novou instanci třídy použít v parametru metody find_first k nalezení elementu GUI element_delete, který reprezentuje v aplikaci RpaTableTest tlačítko Delete selected lines.

Inspector.png
Obrázek 2 Okno aplikace Inspector
import urpa
def main():
app = urpa.exec_app("TutorialApps/RpaTableTest.exe")
condition_delete = cf.name("Delete selected lines")
element_delete = app.find_first(condition_delete)
ConditionFactory_delete_lines_selected.png
Obrázek 3 Nalezené tlačítko "Delete selected lines"

Skript si spustíme. Aplikace RpaTableTest se spustí, dojde k zvýraznění tlačítka Delete selected lines a aplikace se zavře. U takto vytvořeného objektu element_delete lze následně definovat např. simulaci činnosti myši, o tom více v kapitole Robotická interakce.

Vytvoření složitější podmínky

Složitější podmínku pro nalezení elementu GUI může například představovat požadavek na nalezení všech elementů GUI, které mají v atributu Name pětimístnou hodnotu, která má jako třetí znak 'a'. K vytvoření této podmínky je nejprve nutné vytvořit regulární výraz, který zajistí splnění výše uvedených podmínek. Pravidla pro vytvoření a vyhodnocení regulárního výrazu jsou popsána u metody regexp. Regulární výraz splňující výše uvedené podmínky by mohl vypadat např. takto ^..a..$. Po vytvoření regulárního výrazu můžeme nadefinovat v robotizačním skriptu novou instanci objektu Condition condition_regular. Následně lze tuto novou instanci třídy Condition použít v parametru metody find_all k nalezení množiny elementů GUI elements_regular, které splňují podmínku condition_regular.

import urpa
def main():
app = urpa.exec_app("TutorialApps/RpaTableTest.exe")
condition_regular = cf.name(cf.regexp("^..a..$"))
elements_regular = app.find_all(condition_regular)
ConditionFactory_a_strings_selected.png
Obrázek 4 Nalezení řetězců vyhovujících podmínce

Skript si spustíme. Aplikace RpaTableTest se spustí, dojde k zvýraznění elementů GUI, které splňují podmínku condition_regular, tj. elementy GUI s názvy Small, Black a Brand. Následně se aplikace RpaTableTest zavře.

Podmínka v Java aplikaci

Robot umí obsluhovat i elementy v Java aplikacích. Vyzkoušíme si to na aplikaci RpaLoginTest.jar, kterou najde mezi Tutorial Apps. Aplikaci RpaLoginTest.jar spustíme funkcí exec_app jako parameter funkci předáme příkaz: java -jar doplněný o cestu na spuštěnou aplikaci. Podmínku si vytvoříme pomocí nástroje Inspector. První podmínkou bude metoda java a pak definujeme další vlastnosti elementu pomocí metod z JavaCondition. Některé metody jsou stejné s Condition jako například name a některé jsou jedinečné pro Java aplikace, například metoda push_button.

import urpa
def main():
app = urpa.exec_app("java -jar TutorialApps/RpaLoginTest.jar")
condition_java = cf.java().name("Login").push_button()
elements = app.find_first(condition_java)
ConditionFactory_java.png
Obrázek 5 Nalezení tlačítka v Java aplikaci

Skript spustí Java aplikaci RpaLoginTest.jar a najde tlačítko Login, protože máme zapnutý debuggovací režim tlačítko se nám orámuje fialovou barvou.