
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ść?
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
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 i ściągniecie wartości wielkości ekranu oraz kliknięcie „menu start” które zakładamy że będzie w lewym dolnym rogu ekranu.
import pyautogui as gui, time screenWidth, screenHeight = gui.size() gui.moveTo(5,screenHeight-5) gui.click()
funkcja „moveTo” pozwala nam na przesunięcie myszki w odpowiednią część ekranu, a funkcja „click” wykonanie kliknięcia.
Powyższy kod otworzy nam konsole wyszukiwania aplikacji, więc możemy teraz wpisać jej nazwe
gui.typewrite('Notatnik', interval=0.25) gui.press('enter')
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 wszystkie przyciski zawsze były w tym samym położeniu. Wykorzystamy skrót klawiszowy ALT+SPACE+X.
time.sleep(2) #damy 2 sekundy aplikacji notepad na poprawne uruchomienie gui.keyDown('alt') gui.press(' ') gui.press('x') gui.keyUp('alt')
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.
Aby zrobić to efektywnie stworzymy sobie funkcje pomocniczą, która co 3 sekundy wypiszę nam pozycję naszej myszki, ze względu na to że każdy z nas może mieć większy lub mniejszy monitor oraz rozdzielczość, każdy z nas musi znależć swoje własne położenie kursora.
import pyautogui as gui, time def identifyloc(): while True: currentMouseX, currentMouseY = gui.position() print(currentMouseX,currentMouseY) time.sleep(3) identifyloc()

Po uruchumieniu tego krótkiego skryptu nakieruj mysz na miejsce w które chciałbyś kliknąć i odczytaj jej położenie.
Otrzymasz dwie wartości, jedna jest koordynatą w poziomie, druga natomiast w pionie.
W tym wypadku zrobimy kliknięcie w pustą część notatnika oraz wpisanie tekstu
gui.click(250,22) gui.typewrite('Automatyczny tekst')
Teraz możemy zająć się klikaniem w przycisków w aplikacji. Dlatego znajdźmy współrzędne przycisku „format”, a następnie „czcionka”. Po czym wybierzmy większą czcionkę i kliknijmy „OK”.


Połączone razem powinno wyglądać to następująco:
import pyautogui as gui, time def test_notatnik(): screenWidth, screenHeight = gui.size() gui.moveTo(5,screenHeight-5) gui.click() gui.typewrite('Notatnik', interval=0.25) gui.press('enter') time.sleep(2) gui.keyDown('alt') gui.press(' ') gui.press('x') gui.keyUp('alt') #kliknięcie w pusty notatnik gui.click(250,50) gui.typewrite(" <a href=/"https://analityk.edu.pl/rozklad-normalny-w-python//">https://analityk.edu.pl/rozklad-normalny-w-python/</a> ") #kliknięcie w menu format gui.click(250, 10) #kliknięcie w czcionka gui.click(300, 30) #kliknięcie w wartość "26" czcionki gui.click(700, 350) #kliknięcie w OK gui.click(500, 550) test_notatnik()
Podsumowując
Dzięki bilbiotece PyAutoGui możemy zautomatyzować dowolną ilość czynności które na codzień wykonujemy myszką bądź klawiaturą, co daję nam ogromne możliwości. Musimy natomiast pamiętać o tym, że aplikację się zmieniają, przyciski się przesuwają, a dodatkowo z czasem możemy zwiększyć rozdzielczość ekranu czy jego wielkość. Dlatego należy pamiętać o tym, aby dostosować nasze rozwiązanie kiedy takie zmiany następują.
W kolejnym materiale spojrzymy na ten sam przykład zrobiony w bardziej stabilny sposób korzystając z innych metod tej samej bilbioteki.