Automatyzacja jest bardzo zależna od sytuacji danego przypadku i wymaga łączenia wiele typów rozwiązań, aby osiągnąć oczekiwany rezultat. W poniższym materiale poznamy kolejny z nich, a mianowicie rozpoznawanie i interakcję z obrazem na ekranie niezależnie od koordynatów.
poznaliśmy już kilka metod z biblioteki pyautogui, automatyzacje z wykorzystaniem klawiatury oraz myszy
Dziś poznamy kolejną bardzo ciekawą a mianowicie, interakcję z obrazem którego współrzędnych nie znamy, a chcemy wejść z danym elementem w interakcję.
Kontynuując znany nam już przykład z notatnikiem, zrealizujemy go teraz za pomocą rozpoznawania obrazu, dzięki czemu poznamy już 3 różne metody automatyzacji tego samego procesu.
Zatem importujemy bibliotekę pyautogui:
Pierwszym krokiem jest stworzenie sobie bazy obrazów z której będziemy korzystać, czyli w tym przypadku:
- włączenie aplikacji notatnika
- wpisanie tekstu
- kliknięcie menu
- kliknięcie formatu
- wpisanie czcionki
- kliknięcie ok
Następnie możemy zacząć pisać kod i lokalizować elementy działa to w następujący sposób
dostajemy informację o lokalizacji obrazka
Box(left=242, top=588, width=73, height=58)
numery te to współrzędne znalezionego obrazka na naszym ekranie, lewy górny wierzchołek oraz jego szerokość oraz wysokość
możemy się do nich odwoływać za pomocą indexu bądź funkcji zwracającej daną wartość czyli:
możemy też dostać współrzędne samego środka za pomocą prostej metody:
Teraz pozostaję nam jedynie wykonać sekwencje kliknięć i wpisów potrzebnych nam tekstów za pomocą metod które już poznaliśmy takich jak „gui.click(x,y) , gui.doubleClick(x,y) czy gui.typewrite()”
Oczywiście tak jak w poprzednich przypadkach należy zwrócić uwagę na to jak szybko aplikacja reaguję na automatyzację i dostosować oczekiwanie za pomocą time.sleep, tak żeby aplikacja nadążyła za naszym skryptem.
Jak widać może sam przykład nie jest najbardziej błyskotliwy ale z pewnością buduję świadomość możliwości działania biblioteki PyAutoGUI
Podsumowanie
Jeśli nie możemy się spodziewać konkretnego miejsca na ekranie elementu z którymi próbujemy wejść w interakcję, możemy skorzystać z rozpoznawania obrazu wbudowanego w bibliotekę pyautogui. Nie koniecznie jest to najlepszy sposób gdyż jej czuły na zmiany koloru czy kształtu, dlatego też należy uważnie go stosować. W praktyce korzystamy z tej opcji dopiero w ostateczności, również ze względu na wydajność, gdyż analiza ekranu zajmuję zdecydowanie więcej czasu niż samo kliknięcie.