Bu modül, bir şeyleri otomatize etmenize olanak tanır. Bu modülü kısaca anlatacağım ve önemli noktalara değineceğim. Eğer daha fazlasını öğrenmek isterseniz blog sonunda vereceğim linkleri takip edebilirsiniz.
Ekran görüntülerinde faremin imleci gözükmediği için sorun yaşıyorum. Ancak imleç ile alakalı bir işlem yaparken kırmızı bir yuvarlak ile onun yerini göstereceğim. Gösterdiğim her şeyi denemeniz gerekiyor çünkü işlerin nasıl ilerlediğini deneyimlemeniz lazım.
İlk önce bunu cihazımıza yüklememiz lazım. Bunun için pip3 install pyautogui komutunu veriyorum.

Şimdi, bunu import etmemiz lazım. Ancak ben, time modülünün sleep fonksiyonunu da import edeceğim çünkü lazım olacak.

Şimdi, ekranımızın boyutunu öğrenelim.

Gördüğünüz gibi bilgisayarımın ekran boyutu 1920x1080 şeklinde; çıktı doğru.
Şimdi, faremin bulunduğu yerin koordinatlarını almak istediğimi varsayalım.

Programı çalıştırırken faremin imleci ekrandaki kırmızı yuvarlak içerisinde idi. Çıktıda x değerinin 326, y değerinin ise 380 olduğunu görüyorum. Bu, imlecimin bulunduğu yerin koordinatlarıdır.
Peki, aynı şeyi dinamik olarak almak istersek ne yapabiliriz? Yani ben imlecimi hareket ettireceğim ve ekranda sürekli olarak bulunduğu yerin koordinatlarını göreceğim.

Bunun için displayMousePosition() fonksiyonunu kullanıyoruz. Programı çalıştırdıktan sonra imlecim ekrandaki kırmızı yuvarlak içerisindeydi. Çıktımızda ise x:847 y:455 şeklinde bir değerler bütünü mevcut. Bu, o kırmızı yuvarlağın içerisinde bulunan imlecimin koordinatları.
Programı sonlandırmadan önce imlecimi başka bir yere daha koyayım ve çıktıya beraber bakalım.

Şimdi, imlecim sol tarafta duruyor ve koordinatlar yine kusursuz bir şekilde önüme geldi. Bu, dinamik olarak farenizin ekrandaki koordinatlarını gösterecektir. Bu fonksiyonu çok fazla kullanmanız gerekecektir. Örneğin bir butona tıklarken farenizi o butonun üzerine götürüp koordinatları aldıktan sonra koordinatlara bağlı olarak çeşitli işlemler yapabilirsiniz.
Örneğin VSCode içerisinde sol tarafta bulunan Extensions butonunun koordinatlarını alalım.

Faremin imlecini, sol tarafta bulunan Extensions butonuna doğru götürdüm ve şimdi, çıktı kısmında imlecimin şu anki konumunun koordinatlarını görüyorum; x:36 y:310. Peki, bu bilgileri not alalım ve tıklama işleminin nasıl yapıldığını görelim.

pyautogui.click() dedim ve click() fonksiyonunun içerisine biraz önce aldığım koordinatları girdim. Sonrasında sadece python auto.py diyerek kodu çalıştırdım ve imlecim kendi kendine o koordinatlarda bulunan butona tıkladı.
Eğer doubleClick() fonksiyonunu kullanırsanız iki defa tıklar; tripleClick() fonksiyonunu kullanırsanız 3 defa tıklar. Bunları deneyerek öğrenmeniz gerekiyor.

Eğer duration= parametresini verirseniz, imleciniz hangi lokasyondaysa duration= ifadesine verdiğiniz saniye değeri boyunca belirlediğiniz koordinatlara doğru sürüklenecek ve tıklama işlemi gerçekleşecektir. Örneğin duration=3 dediğim için programı çalıştırınca imlecim 3 saniyede belirttiğim x ve y koordinatlarına gidecek ve bir defa tıklama işlemi yapacaktır.

moveTo() fonksiyonu ise yine aynı şekilde değerler alabilir ama bu, yalnızca sürükleme işlemini yapar. Yani tıklama gibi bir işlevi yoktur. Ancak isterseniz şu şekilde bir kullanım sağlayabilirsiniz:

İlk önce moveTo() fonksiyonu ile imleci istediğiniz yere alabilir, sonrasında basitçe click() diyebilirsiniz. Bu, pyautogui.click(x=36, y=310, duration=5) demek ile aynı şeydir.

dragRel() fonksiyonuna yine benzer şekilde koordinat ve süre verdiğiniz zaman verdiğiniz süre boyunca verdiğiniz koordinattan aşağı doğru seçme işlemi gerçekleştirecektir.
Şimdi, tıklama işlemlerine biraz daha farklı bir açıdan bakalım.

press() fonksiyonu ile örneğin Windows başlangıç menüsünü açabilirsiniz. Bu fonksiyonla beraber kullanılan bir başka fonksiyon ise write() fonksiyonudur. Bu fonksiyon, bir yerlere bir şeyler yazmanıza olanak tanır. Bakalım.

İlk adımda press("win") sayesinde windows başlangıç menüsüne eriştik. Sonrasında write("Chrome") diyerek açılan menüye Chrome yazdık:

Bunu kendisi yaptı. Peki, eğer bu uygulamaya yani Chrome'a girmek istersem ne yapabilirim?

Tekrardan press() fonksiyonunu kullandım ve 'enter' tuşunun devreye girmesini sağladım. Böylece ilk önce başlangıç menüsü açıldı, sonra Chrome kelimesi aratıldı ve Enter'a basıldı. Peki, write() kullanarak sitemize gidebilir miyiz?

Neden arama çubuğuna URL adresini yazmadı? İşte, sleep() fonksiyonunu tam olarak burada kullanacağız. Bu tarz otomasyon işlemlerinde bilgisayarın hızı, programların açılma süresi çok önemlidir. Bu ekranda Google Chrome'u açtı hatta adres yazdırma işi de gerçekleşti ancak tarayıcı geç açıldığı için bunu göremedik. Şimdi, programı 1 saniyeliğine uyutup öyle deneyeceğim.

Gördüğünüz üzere bu defa sonuç alabildik. Chrome'u açtıktan sonra tarayıcının, kendi gereksinimlerini karşılaması için 1 saniyelik bir duraksama gerçekleştirdik. Sonrasında bu duraksama bittiğinde zaten Chrome tamamen açılmış olduğu için yazdırma işlemimiz de gerçekleşti.
Peki, bir daha press("enter") diyelim ve siteye girelim.

Sonuçlarımız gayet iyi. Demek ki biraz bekleme yapmak her zaman daha sağlıklı olacaktır. Örneğin bir hesabınıza otomatik olarak girecekseniz önce sayfanın yüklenmesini beklemeniz daha doğru olur. Bunu da zaten time.sleep(1) ile yapabilirsiniz. Duruma bağlı olarak isterseniz time.sleep(0.5) şeklinde de kullanabilirsiniz.

16. satırdan devam ediyoruz. Burada yine 1 saniye bekledik. Sonrasında hotkey() fonksiyonu ile birden fazla klavye tuşunu kontrol ettik. CTRL + T ile yeni bir sekme açabildiğimiz için bunu kodda kullandım. Bunları kontrol ederken her tuşu virgül ile diğerinden ayırdık. Sonrasında YouTube'a girdik ve bunların hepsini bu yazılım yaptı. Daha açıklayıcı bir görsel bırakıyorum.

hotkey() ve write() çok kullanışlıdır. Ancak write() fonksiyonu bazen değişik sorunlar yaratabiliyor. Örneğin;

Dikkat ederseniz '@' ifadesini yazdıramıyor. Bunun için hotkey() kullanabiliriz.

Gördüğünüz gibi e-mail adresini iki parçaya böldük ve arasına hotkey() ifadesi yerleştirdik. Normalde '@' işareti AltGr + q ile sağlanır. İşte, oradaki 'altright' ifadesi, "sağ tarafta kalan Alt tuşu" anlamına geliyor. Bu ikisini kombine ettiğimizde de sorunumuz çözülmüş oluyor.
Örneğin parolanızda yıldız işareti var. write() fonksiyonu bu yıldızları soru işareti olarak alıyor. Bakalım.

Bu şekilde gerçekleşiyor. Bunun çözümü için başka bir modül daha kullanmamız lazım.

import pyperclip komutu ile pyperclip modülünü import ettim. Sonrasında pyperclip modülü içerisinde bulunan copy() fonksiyonu ile az önceki parolayı kopyaladım. Hemen sonrasında bildiğimiz hotkey() ile yapıştırma işlemi yaptım. Yani bir nevi Kopyala-Yapıştır olmuş oldu. Biraz uzun bir yol ama çözüme ulaştırıyor.
Bu blog içerisinde öğrendiklerinizle bile çeşitli otomasyonlar yapabilirsiniz. Bu blog ileride güncelleme alır mı bilemiyorum ancak ilginizi çektiyse aşağıdaki linklerden modülün detaylarına, başka fonksiyonlarına bakabilirsiniz.
https://pyautogui.readthedocs.io/en/latest/quickstart.html
https://pypi.org/project/PyAutoGUI/
Yayınlanma Tarihi: 2022-12-07 16:00:35
Son Düzenleme Tarihi: 2022-12-11 17:25:07