Im letzten Video haben wir uns angeschaut, wie wir Buttons anhand ihrer Koordinaten klicken können. Das ist an sich ziemlich geil, funktioniert aber eben leider auch nur, wenn der Button immer an der selben Position ist. Und genau dieses Problem lösen wir jetzt. Los geht’s!
Vorbereitung
Wir werden jetzt ein Skript schreiben, das anhand eines Screenshots ein bestimmtes Element auf dem Bildschirm erkennt und anschließend klickt. Und das beste ist: Diese Methode funktioniert nicht nur im Browser, sondern in allen Programmen.
Wir müssen vorab zwei Paket installieren. Das erste ist PyAutoGUI:
pip install pyautogui
Das können wir jetzt zum Steuern von Maus und Tastatur nutzen.
Und das zweite ist:
pip install opencv-python.
Das ist einfach gesagt eine Sammlung von Algorithmen zur Bildverarbeitung, die später nochmal wichtig sein wird.
Und dann sind wir auch schon startklar.
Python das Aussehen des Buttons beibringen
Damit unser Skript weiß, wie unser Button aussieht, machen wir als allererstes einen Screenshot davon. Wir nutzen heute hier wieder https://theuselessbutton.com und versuchen einfach, auf diesen grünen Button zu klicken.
Einen Screenshot macht man bei MacOS am besten über die Tastenkombination command + shift + 4. Wenn ihr auf Windows seid, dann könnt ihr einfach z.B. das vorinstallierte Programm Snipping Tool verwenden. Wichtig ist, dass wir nur einen Screenshot vom Button machen und nicht vom ganzen Bildschirm.

Mein Screenshot sieht jetzt ganz nett aus und den leg ich mir gleich mal in genau dem Ordner ab, wo mein Python-Script liegt. Sinnvoll ist es hier auch, gleich einen eindeutigen Namen zu vergeben, in meinem Fall also z.B. button.png.
Button suchen lassen
Als nächstes legen wir uns eine Funktion an, die unser Skript beauftragt, nach dem Button zu suchen.
def click_button(image):
while True:
position = locateCenterOnScreen(image, confidence=0.90)
if position:
breakKlick auslösen
Sobald der Button gefunden wurde, soll er logischerweise noch gedrückt werden. Dazu schnappen wir uns als erstes mal die X und die Y Koordinate. Und mit diesen Koordinaten lösen wir dann den Klick aus.
x, y = position
click(x, y) Funktion aufrufen
Okay, allerhöchste Zeit, dass wir unsere Funktion auslösen. Dafür schreiben wir kurz auf, wo das Bild zu finden ist und übergeben das Bild dann der Funktion.
image = 'button.png'
click_button(image)An der Stelle sollte jetzt zumindest der Klick schon funktionieren. Probieren wir’s aus!
Wenn ihr Glück habt, dann funktioniert das Skript bei euch jetzt sogar schon wie gewünscht. Gerade bei Macs und modernen Windows-Laptops kann es aber passieren, dass euer Skript vorbeiklickt. Das kriegt man aber auch schnell gelöst, also Zeit für etwas Debugging.
Probleme mit dem Scaling lösen
Der Grund für das Problem ist Scaling. Wenn ihr z.B. einen MacBook mit Retina Display habt, dann entspricht die Anzahl der Pixel nicht der tatsächlichen Größe des Displays. Das ist zum Beispiel dann der Fall, wenn pro Pixel, den ihr seht, eigentlich mehrere Pixel dargestellt werden, damit das Bild noch schärfer wird.
Und diesen Faktor, in meinem Fall jetzt 0.5, bauen wir jetzt in das Skript ein. Den Faktor notier ich mir gleich mal in einer Variable und übergebe die Variable an meine Funktion.
scaling = 0.5
image = 'button.png'
click_button(image, scaling)In der Funktion nehmen wir unsere X- und Y-Koordinaten einfach mal dem Scaling Faktor.
x, y = position
x *= scaling
y *= scalingUnd das wär’s auch schon – nun sollte alles funktionieren.
Okay, das soll’s erstmal für heute gewesen sein. Wenn ihr meine Arbeit unterstützen wollt, dann macht einfach den üblichen Schnickschnack, also lasst ein Abo da, liked das Video oder schreibt einen freundlichen Kommentar für den lieben YouTube-Algorithmus.
Und solltet ihr sonst noch Fragen haben, schmeißt sie einfach in die Kommentare. Ich versuche eure Fragen dann mit passenden Tutorials zu beantworten.
Und letzter ein Punkt: Überlegt euch außerdem gern mal, ob ihr mich per Paypal oder Patreon unterstützen könnt. Das hält dieses Angebot am Leben und ermöglicht mir es, mehr Zeit in diesen Kanal zu investieren.
Ein erster Patreon ist schon dabei, bei dir bedanke ich mich hier schon mal ganz herzlich.
Ansonsten wünsch ich euch allen noch eine wunderschöne Woche, bleibt neugierig und bis bald.
✅ Kompletter Quellcode
from pyautogui import locateCenterOnScreen, click
def click_button(image, scaling):
while True:
position = locateCenterOnScreen(image, confidence=0.90)
if position:
break
x, y = position
x *= scaling
y *= scaling
click(x, y)
return
scaling = 0.5
image = 'button.png'
click_button(image, scaling)