Wyobraźmy sobie świat w którym nie musimy klikać ani wpisywać nic na klawiaturze. Codziennie używamy wielu aplikacji korzystając z myszki i klawiatury, w tym materiale nauczymy się jak zastępować takie czynności używając pythona.

Źródłem powstania bilbioteki PyAutoGui była potrzeba automatyzacji testów aplikacji przed jej ostatecznym wypuszczeniem na rynek. No bo ile razy jesteśmy w stanie my jako ludzie ręcznie przeklikać się przez 100 okien, 3 razy, 10 razy, 100 razy, 1000 razy? A co jeśli napiszemy prosty skrypt który zrobi to za nas?

Niezależnie od testowania działania aplikacji, ile razy w ciągu dnia czy tygodnia wykonujemy tą samą czynność?

Zrobiliśmy już materiał o PyAutoGui wykorzystujący myszkę, w tym artykule przejdziemy ten sam proces ale korzystając ze skrótów klawiszowych wywoływanych przez Pythona.

http://analityk.edu.pl/automatyzuj-interfejs-dowolnej-aplikacji-z-pyautogui-w-pythonie/

Wstęp do PyAutoGUI

PyAutoGui to biblioteka w Pythonie która pozwala nam na pracę zarówno na systemie Windows, systemie firmy Apple oraz Linuxie. Dzięki niej możemy zasymulować dowolną aktywność wykonywana myszką bądź klawiaturą.

Zainstalujmy samą bibliotekę:

pip install pyautogui

po czym zaimportujmy do naszego projektu:

import pyautogui as gui

Przykład użycia z wykorzystaniem skrótów

Zobaczmy ją w akcji, stwórzmy szybki skrypt. Załóżmy, że mamy zainstalowaną aplikację notatnik i chcemy zrobić prosty test sprawdzający czy możemy ją otworzyć wpisać tekst po czym zmienić rozmiar tekstu.

Pierwszą rzeczą będzie zaimportowanie biblioteki oraz otworzenie notatnika, skorzystamy tutaj z okna uruchomieniowego windows.

import pyautogui as gui

gui.hotkey('win', 'r')
gui.typewrite("notepad", interval=0.25)
gui.press('enter')

Powyższy kod otworzy nam konsole wyszukiwania aplikacji korzystając z skrótu przyciskowego „WINDOWS + R”, wpisze nazwę aplikacji(typewrite) oraz wciśnie enter (press), aby potwierdzić.

Dzięki funkcji „typewrite”, wpisujemy tekst, dodatkowo możemy ustawić argument interval, który będzie robił krótką przerwę między wciśnięciami klawiatury tak, aby komputer miał czas zareagować.

Następnie maksymalizujemy okno aplikacji tak, aby wyraźnie widać akcje które są wykonywane. Wykorzystamy skrót klawiszowy ALT+SPACE+X, korzystając z drugiego sposobu wciśniecią kilku przycisków naraz.

import time

time.sleep(3) #give 2 seconds for firefox to launch
gui.keyDown('alt')
gui.press(' ')
gui.press('x')
gui.keyUp('alt')

keyDown robi wciśnięcie pierwszego przycisku (alt) dopóki nie wywołamy funkcji keyUp, przycisk pozostaje wciśnięty.

Jesteśmy teraz w położeniu w którym możemy zacząć tworzyć dowolną sekwencje akcji które chcemy wykonać w aplikacji. Czyli na przykład wpisanie odpowiedniego tekstu oraz zmienienie jego czcionki.

Dodajmy teraz jedna dodatkową linijkę wpisującą tekst

gui.typewrite("Czesc tu twoj wlasny piszacy automat")

Teraz możemy zająć się klikaniem przycisków w aplikacji. Większość aplikacji w windowsie posiadają skróty klawiszowe które pokazują się po wciśnieciu przycisku „alt”

Przechodząc ścieżkę tych podkreślonych liter widzimy, że po wciśnieciu litery „o” oraz „f” dochodzimy do wyboru czcionki. Połączone razem powinno wyglądać to następująco:

gui.press('alt')
gui.press('o')
gui.press('f')
time.sleep(2)

pokazuje nam się takie o to okno, w którym będziemy zmieniać wielkość. Po ekranie możemy poruszać się strzałkami bądź przyciskiem „Tab” w tym przypadku po wciśnięciu przycisku „Tab” dwa razy znajdziemy się w polu wielkości czcionki i zostanie nam jedynie wpisanie wielkości którą chcemy.

Obrazek posiada pusty atrybut alt; plik o nazwie czcionka.png
gui.press('tab')
gui.press('tab')
gui.typewrite('26')
time.sleep(1)
gui.press('enter')

Widzimy efekt końcowy który jest powiększeniem już napisanego przez nas tekstu. Pozostaje nam tylko jego zapisanie:

time.sleep(1)
gui.hotkey('ctrl','s')
gui.typewrite('automat')
gui.press('enter')

Podsumowując

Dzięki bilbiotece PyAutoGui możemy zautomatyzować dowolną ilość czynności które na codzień wykonujemy klawiaturą, co daję nam ogromne możliwości. Musimy natomiast pamiętać o tym, że aplikację się zmieniają, przyciski się przesuwają. Dlatego należy pamiętać o tym, aby dostosować nasze rozwiązanie kiedy takie zmiany następują.