pyautogui - GUI Automation

Gbmdpof

Kıdemli Üye
23 Eyl 2016
2,001
11
Son zamanlarda forumda sıkça oyunlara nasıl bot yapabilirim, şu işlemi nasıl otomatikleştirebilirim gibi yardım konularına rastlıyorum. PyAutoGUI de bu işlemi yapabilmenizi sağlayan, cross-platform bir GUI otomasyon modülüdür.

Kurulum

Windows üzerinde çalışmak için, PyAutoGUI ek bir gereklilik istememektedir. Bu komut ile kurabilirsiniz:

Kod:
pip install pyautogui

OS X üzerinde çalışabilmek için, pyobjc-core ve pyobjc modüllerinin kurulu olması gerekmektedir. Kurulumu aşağıdaki komutlarla yapabilirsiniz:

Kod:
pip install pyobjc-core
pip install pyobjc
pip install pyautogui

Linux için de birkaç dependency kurmanız gerekiyor. Bu komutlar ile kurulumu yapabilirsiniz:

Kod:
pip install python3-xlib
sudo apt-get install scrot
sudo apt-get install python3-tk
sudo apt-get install python3-dev
pip install pyautogui

Kullanım

Öncelikle PyAutoGUI'yi import etmek ile başlayalım.

Kod:
import pyautogui

Şimdi ise PyAutoGUI'nin birkaç özelliğini inceleyelim.

Genel Özellikler

P15Ak8.png

Fail-Safe

Bazen uygulamalar istediğimiz şekilde çalışmayabilir. Örneğin bir yere durmadan tıklanıyor olabilir ve uygulamayı durdurmaya vaktiniz olmayabilir. Bu sebeple PyAutoGUI, mouse imlecini sol üst köşeye taşıdığınızda pyautogui.FailSafeException hatası verecektir.

Kod:
>>> import pyautogui
>>> pyautogui.PAUSE = 2.5

pyautogui.PAUSE'u 2.5 saniye yaparak da her pyautogui çağrısı arasında programın 2.5 saniye beklemesini ve bize imleci sol üst köşeye taşımak için vakit vermesini sağlayabiliriz.

Bu Fail-Safe'ı devre dışı bırakmak için ise bu kodu ekleyebilirsiniz:

Kod:
>>> pyautogui.FAILSAFE = False

Mouse Hareketleri

Ekranınızdaki konumlar, X ve Y'nin Cartesian kordinatlarıdır. (0, 0) noktası, ekranın sol üst köşesidir ve X, sağa gidildikçe, Y de aşağı gidildikçe artar.

Kod:
0,0       X artar -->
+---------------------------+
|                                       | Y artar
|                                       |     |
|    1920 x 1080 ekran    |     |
|                                       |     V
|                                       |
|                                       |
+---------------------------+ 1919, 1079

Başlangıç noktası 1 değil de 0 olduğu için bitiş noktası da ekran boyutunun 1 eksiği.

Şimdi poziyonları öğrendiğimize göre imleci hareket ettirelim.

lqk8pb.png

Mouse imlecinin konumunu değiştirmek istemeyip de sürüklemek istersek de aşağıdaki kodlar işimize yarayacaktır. Kullanımları move komutları ile aynı, sadece tek farkı bunun direkt götürmek yerine sürükleyerek götürmesi. Kaydırma işlemi gibi işlemler için bu drag komutlarını kullanabiliriz.

Kod:
>>> pyautogui.dragTo(x, y) 
>>> pyautogui.dragRel(xOffset, yOffset)

click metodu, eğer hiçbir argüman vermezseniz imlecin olduğu yere tıklar. Fakat aşağıdaki argümanlar ile farklı şeyler de yapabilirsiniz:

Kod:
>>> pyautogui.click(x=<tıklanacak_X>, y=<tıklanacak_Y>, clicks=<tıklama_sayısı>, interval=<tıklamalar_arası_saniye>, button=<tıklanacak buton (left|right|middle))

Ayrıca daha okunabilir olması için aşağıdaki metodları da kullabilirsiniz:

Kod:
>>> pyautogui.rightClick(x=moveToX, y=moveToY)
>>> pyautogui.middleClick(x=moveToX, y=moveToY)
>>> pyautogui.doubleClick(x=moveToX, y=moveToY)
>>> pyautogui.tripleClick(x=moveToX, y=moveToY)

Kaydırma yapmak için:

Kod:
>>> pyautogui.scroll(<kaydırma_miktarı>, x=moveToX, y=moveToY)

Ayrıca mouse butonlarına basma ve kaldırma hareketlerini kendiniz yapmak için:

Kod:
>>> pyautogui.mouseDown(x=moveToX, y=moveToY, button='left')
>>> pyautogui.mouseUp(x=moveToX, y=moveToY, button='left')

Klavye İşlemleri

PyAutoGUI ile sadece mouse değil, klavyeden de veri gönderebilirsiniz.

Kod:
>>> pyautogui.typewrite('Hello world!\n', interval=<tuslar_arasında_saniye>)  # İmlecin seçili olduğu yere Hello World! yazar ve Enter'a basar (\n)

Ayrıca bir metin değil, karakter listesi de girilebilir.

Kod:
>>> pyautogui.typewrite(['a', 'b', 'c', 'left', 'backspace', 'enter', 'f1']) # abc yazar, imleci sola kaydırır, 1 karakter siler, Enter'a basar ve F1'e basar.

Tüm tuşların adları, pyautogui.KEYBOARD_KEYS altında bulunabilir.

Ayrıca, CTRL+C, CTRL+V gibi hotkeyleri de PyAutoGUI ile basabilirsiniz.

Kod:
>>> pyautogui.hotkey('ctrl', 'c')  # Seçili metni kopyalar (CTRL+C)
>>> pyautogui.hotkey('ctrl', 'v')  # Metni yapıştırır (CTRL+V)

Ayrıca, tuşlarda da mouse gibi basma ve kaldırma hareketlerini özel olarak yapabilirsiniz.

Kod:
>>> pyautogui.keyDown(<karakter_adı>)
>>> pyautogui.keyUp(<karakter_adı>)

 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.