This is UltimateRPA Documentation
Clipboard

Využití práce se schránkou Windows

Robot dovede komunikovat se schránkou Windows (clipboardem), kdy do schránky umožňuje vložit označený text stejně jako by to udělal uživatel, simulací stisku klávesové zkratky (CTRL + C) nad označeným textem metodou send_key. Do schánky umožňuje také vložit text přímo ze skriptu pomocí funkce set_clipboard_text. K obsahu schránky můžeme ve skriptu přistupovat za pomoci volání funkce clipboard_text. Do GUI elementu pak obsah schránky vrací robot, podobně jako uživatel, simulací stisku klávesové zkratky (CTRL + V), skrze metodu send_key.

Schránka tak může mít funkci prostředníka v případě, že text v daném GUI elementu není uložen v žádné z jeho interních proměnných (Name, Value, Control type, ...). To se hodí zvláště, když potřebujeme ověřit, že komunikace robota s aplikací proběhla v pořádku a do elementu se zadaly hodnoty správně.

Vkládání textu skrze schránku pak může být výhodné v případě aplikací s našeptávači textu (např. různé vyhledávače), které mohou robota v některých případech zmást a způsobit tak špatný přepis odeslaného textu.

Vzhledem k tomu, že do schránky má přístup uživatel i některé aplikace, je dobré snažit se její využití (dobu mezi vkladem hodnoty do schránky a výběrem hodnoty ze schránky) omezit na co nejkratší dobu. Vyhneme se tak nechtěnému přepsání hodnoty uložené ve schránce uživatelem, případně aplikací.

Zjištění hodnoty v GUI elementu skrze schránku

Výhodnost užití Clipboardu si ukážeme na práci s aplikací RpaFormsTest. Pro účely hledání GUI elementů v aplikaci RpaFormsTest využijeme Inspector a funkcí exec_app spustíme aplikaci RpaFormsTest.

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

Cesta k aplikaci "TutorialApps/RpaFormsTest.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.

Pomocí příkazu find_first_right_to najdeme editbox v pravo od textového objektu "ID". Do editboxu poté zapíšeme text "test" použitím metody send_text.

import urpa
def main():
app = urpa.exec_app("TutorialApps/RpaFormsTest.exe")
id_box = app.find_first_right_to(cf.text().name("ID"), cf.custom())
id_box.send_text("test")
Clipboard_editbox_highlighted.png
Obrázek 2 Nalezení ID editboxu
Clipboard_text_sent.png
Obrázek 3 Text napsaný robotem do ID editboxu

Z vnitřních hodnot value, name GUI elementu nejsme schopni zjistit hodnotu vepsanou do objektu, proto kontrolu provedeme vykopírováním obsahu do schánky. Nejdříve budeme simulovat stisk klávesové zkratky (CTRL + A) metodou send_key pro výběr obsahu buňky a následně stejnou metodou budeme simulovat stisk klávesové zkratky (CTRL + C).

import urpa
def main():
app = urpa.exec_app("TutorialApps/RpaFormsTest.exe")
id_box = app.find_first_right_to(cf.text().name("ID"), cf.custom())
id_box.send_text("test")
id_box.send_key("CTRL+a")
id_box.send_key("CTRL+c")
Clipboard_text_selected.png
Obrázek 4 Text vybraný robotem v ID editboxu

Ve skriptu se pak k textu ve schránce dostaneme užitím funkce clipboard_text, která vrací text ze schránky. Ten uložíme do proměnné a vytiskneme do konzole.

import urpa
def main():
app = urpa.exec_app("TutorialApps/RpaFormsTest.exe")
id_box = app.find_first_right_to(cf.text().name("ID"), cf.custom())
id_box.send_text("test")
id_box.send_key("CTRL+a")
id_box.send_key("CTRL+c")
print text

Skript na závěr spustíme stiskem klávesové zkratky (ALT + F9) v PyScripteru

Takto robot dovede pracovat pouze s textem ve schránce. V případě, že je ve schránce uložen jiný obsah (obrázek, soubor), volání funkce clipboard_text vrátí prázdný řetězec a robot do logu vypíše [ERROR] Event: #, Clipboard: text not available. Tato chyba ale nezastaví běh robota.

Vložení hodnoty do GUI elementu skrze schránku

Robot vkládá hodnoty, podobně jako uživatel, simulací stisku klávesové zkratky (CTRL + V) pomocí metody send_key. Ukážeme si užití na práci s aplikací RpaFormsTest. Nejprve spustíme PyScripter a připravíme si nový skript.

import urpa
def main():
app = urpa.exec_app("TutorialApps/RpaFormsTest.exe")

Pomocí příkazu find_first_right_to najdeme editbox v pravo od textového objektu "ID".

import urpa
def main():
app = urpa.exec_app("TutorialApps/RpaFormsTest.exe")
id_box = app.find_first_right_to(cf.text().name("ID"), cf.custom())

Pro vklad textu do vybraného pole skrz schránku, musíme nejdřív požadovaný text do schránky uložit. To uděláme voláním funkce set_clipboard_text, která jako argument bere řetězec, který do schránky uloží.

import urpa
def main():
app = urpa.exec_app("TutorialApps/RpaFormsTest.exe")
id_box = app.find_first_right_to(cf.text().name("ID"), cf.custom())

Vklad textu ze schránky do editboxu provedeme voláním metody send_key, skrze kterou budeme simulovat stisk klávesové zkratky (CTRL + V)

import urpa
def main():
app = urpa.exec_app("TutorialApps/RpaFormsTest.exe")
id_box = app.find_first_right_to(cf.text().name("ID"), cf.custom())
id_box.send_key("CTRL+v")

Skript spustíme v PyScripteru klávesovou zkratkou (ALT + F9). Po vložení textu je opět vhodné zkontrolovat, že jsme text vložili správně.