This is UltimateRPA Documentation
Ovládání více aplikací

Robot UltimateRPA může obecně pracovat při zpracování jednoho robotizovaného procesu s více aplikacemi. V rámci jednoho robotizovaného procesu tak může robot například obsluhovat aplikaci Internet Explorer, Excel a Adobe reader. V tomto návodu si vyzkoušíme jak na ovládání více aplikací v jednom robotizačním skriptu.

Spuštění více aplikací robotem

Nejprve si připravíme kód pro spuštění aplikace RpaTableTest a RpaLoginTest. Naimportujeme modul urpa. Cesta k aplikaci v argumentu funkce exec_app může být absolutní nebo relativní vůči skriptu. Nakonec metodou set_auto_close nastavíme, aby robot spuštěnou aplikaci RpaTableTest po dokončení skriptu neukončil. Pokud s tímto nastavením spouštíte aplikaci RpaTableTest přes PyScripter, je nutné ji ručně ukončit před dalším spuštěním robota.

import urpa
def main():
app_table_test = urpa.exec_app("TutorialApps/RpaTableTest.exe")
app_table_test.set_auto_close(False)
app_login_test = urpa.exec_app("TutorialApps/RpaLoginTest.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.

ControlMultipleApplication_starting_two_apps.png
Obrázek 1 Otevření dvou aplikací

Pokud skript spustíme (ALT + F9), tak po spuštění aplikace RpaTableTest problikne na desktopu aplikace RpaLoginTest a aplikace RpaTableTest zůstane spuštěná.

Možnosti zavření aplikace

Pokud si na konci robotizačního skriptu nejsme jisti, jak máme nastaven atribut na automatické ukončení aplikace pomocí metody set_auto_close, lze vynutit ukončení aplikace zavoláním metody close. V našem případě tedy zajistíme zavření aplikace RpaTableTest zavoláním metody close na proměnnou app_table_test.

import urpa
def main():
app_table_test = urpa.exec_app("TutorialApps/RpaTableTest.exe")
app_table_test.set_auto_close(False)
app_login_test = urpa.exec_app("TutorialApps/RpaLoginTest.exe")
app_table_test.close()

Pokud skript spustíme (ALT + F9), tak po spuštění aplikace RpaTableTest problikne na desktopu aplikace RpaLoginTest a aplikace RpaTableTest se následně také ukončí.

Změna pozice a velikosti okna aplikace

Pokud v našem příkladu prohodíme pořadí spouštěných aplikací, tak pravděpodobně nezaznamenáme spuštění aplikace RpaLoginTest, neboť okno aplikace RpaLoginTest bude ihned po spuštění překryto oknem aplikace RpaTableTest. Abychom se obdobným problémům při obsluze více aplikací vyhnuli, je vhodné použít metodu resize_tp_window, pomocí které lze změnit velikost a polohu okna aplikace. Na proměnnou app_login_test tedy zavoláme metodu resize_tp_window s prvním parametrem "Login", který reprezentuje element GUI, podle kterého je okno aplikace RpaLoginTest identifikováno. Druhý parametr metody nastavíme na tuple (1, 1, 400, 200), který reprezentuje novou polohu a velikost okna aplikace RpaLoginTest na desktopu. Hodnoty jsou řazeny v pořadí levý, vrchní, pravý, spodní roh okna aplikace. Obdobně zavoláme metodu resize_tp_window na proměnnou app_table_test, kde v druhém parametru typu tuple nastavíme polohu okna aplikace RpaTableTest přesně pod okno aplikace RpaLoginTest. Aby byla nová pozice aplikací dobře patrná, přidáme na konec robotizačního skriptu prodlevu pomocí metody time.sleep().

import time
import urpa
def main():
app_login_test = urpa.exec_app("TutorialApps/RpaLoginTest.exe")
new_position = (1, 1, 400, 200)
app_login_test.resize_tp_window("Login", new_position)
app_table_test = urpa.exec_app("TutorialApps/RpaTableTest.exe")
new_position = (1, 200, 600, 600)
app_table_test.resize_tp_window("RpaTableTest", new_position)
time.sleep(3)
ControlMultipleApplication_apps_resized.png
Obrázek 2 Změněná pozice dvou aplikací

Pokud skript spustíme (ALT + F9), tak po spuštění aplikace RpaLoginTest dojde k přesunutí jejího okna do levého horního rohu desktopu a okno aplikace RpaTableTest se zobrazí pod aplikací RpaLoginTest.

Popsané vlastnosti svázané s funkcí exec_app platí obecně taktéž pro funkce exec_excel_app a exec_ie_app.

Incializační velikost TP okna aplikace

Pokud spouštíme aplikaci, která podporuje standardní operace pro maximalizaci a minimalizaci okna, můžeme při jejím spuštění pomocí funkce exec_app vynutit velikost jejího tzv. TP okna. Pokud druhý parametr nastavíme na hodnotu "Maximize" zobrazí se TP okno aplikace maximalizované. V následujícím příkladu spustíme aplikaci RpaStartTest a její TP okno nastavíme na Maximální možnou velikost.

import time
import urpa
def main():
app_test = urpa.exec_app("TutorialApps/RpaStartTest.exe", "Maximize")
time.sleep(3)

TP okno je vždy tzv. nejvyšší okno aplikace, zkratka TP znamená TopParent. Pokud v Inspectoru přesuneme zaměřovač nad libovolnou aplikaci je TP okno aplikace reprezentováno vždy prvním přímým potomkem kořene stromu, který zobrazuje název procesu a PID.

ControlMultipleApplication_inspector_top_parent.png
Obrázek 3 Vybraný TopParent v Inspectoru

Nalezení již spuštěné aplikace

Při robotizaci může nastat situace, že bude potřeba spravovat aplikaci, která byla spuštěna automatizovaně při zpracování robotizačního skriptu. Taková aplikace může být spuštěna například po interakci s ovládacím prvkem v grafickém rozhraní robotizované aplikace. Jako příklad správy takové aplikace si ručně spustíme aplikaci RpaTableTest. Následně budeme chtít ručně spuštěnou aplikaci RpaTableTest zavřít automatizovaně, pomocí robotizačního skriptu. K nalezení aplikace slouží funkce find_first_app, kde je potřeba v prvním parametru specifikovat jednoznačný název titulu TP okna nebo ClassName TP okna hledané aplikace. Pro nalezení těchto hodnot TP okna u aplikace RpaTableTest nám poslouží nástroj Inspector. Po spuštění nástroje Inpector, přetáhneme jeho zaměřovač nad aplikaci RpaTableTest. Po uvolnění zaměřovače vybereme druhý řádek "RpaTableTest[Window]" ve stromě v levé části aplikace Inspector. Následně se nám v pravé části aplikace Inspector zobrazí ve sloupci Value v řádku Name hodnota titulu TP okna aplikace RpaTableTest a ve sloupci Value v řádku Class Name hodnota ClassName TP okna. Pro jednoznačnou identifikaci aplikace RpaTableTest je vhodné použít hodnotu title TP okna "RpaTableTest". Pro zavření okna aplikace zavoláme opět metodu close na nově vytvořenou proměnnou app, která je vytvořena po předchozím volání funkce find_first_app.

import urpa
def main():
app = urpa.find_first_app("RpaTableTest")
app.close()
RpaTableTest.png
Obrázek 4 Okno aplikace RpaTableTest

Pokud skript spustíme (ALT + F9), tak po spuštění dojde k ukončení ručně spuštěné aplikace RpaTableTest.

Popsané vlastnosti svázané s funkcí find_first_app platí obecně taktéž pro funkce find_first_excel_app a find_first_ie_app. Pokud je obtížné definovat jednoznačný parametr pro identifikaci hledané aplikace ve funkci find_first_app, je možné využít funkci open_app, která hledá aplikaci podle PID.