Python PyAutoGUI ile adından anlaşılacağı üzere gui üzerinde otomasyon işlemlerinizi yapmanıza imkan sağlayan bir araç olduğunu söyleyebiliriz. Makale detayında detaylı olarak uygulamalar üzerinde GUI testlerini nasıl gerçekleştirebileceğimizi göreceğiz.
Python PyAutoGUI nedir, nasıl kurulur, örnekli kullanım?
Bu otomasyon işlemleri selenium v.b. otomasyon araçlarında olduğu gibi bir id ya da ilgili nesnenin referans bir değeri üzerinden değil de, tamamen verebileceğiniz örnek görseller üzerinden, hızlıca görüntü işleme ile nesnelerin konumunu bularak, size elementlerin listesini x, y koordinatlarıyla dönmesine imkan sağlayan bir tool olduğunu özetle söyleyebiliriz.
Kullanmış olduğunuz işletim sisteminizde python kurulu olduğu varsayılarak işlemlere devam edeceğiz ama python kurulu değilse https://www.python.org/downloads/ adresinden işletim sisteminize uygun olan kurulum yönlendirmelerini takip ederek kolayca python kurulumunu gerçekleştirebilirsiniz.
Peki, PyAutoGUI ile neler yapılabilir?
- Ekran görüntüsü çekebilirsiniz.
- Ekran çözünürlüğünüze ait genişlik, yükseklik bilgisini alabilirsiniz.
- Klavye tuş tıklamasını otomatize edebilirsiniz. Enter’a tıkla, c harfine tıkla gibi.
- Klavye tuş tıklamalarını tek tek yapmak yerine uzun text’ler girilmesini tek metodda sağlayabileceğiniz write metodu ile text girişlerini metin girişi desteklenen alanlara hızlıca yapabilirsiniz.
- Birden fazla tuş kombinasyonlarınızı otomatize edebilirsiniz. Ctrl + C, Ctrl + V gibi.
- Mouse tıklamalarını otomatize edebilirsiniz. Mouse sağ tuşa tıkla, Mouse sol tuşa çift tıkla gibi.
- Mouse’u istediğiniz x,y konumuna doğrudan yada animasyonlu bir biçimde yönlendirebilirsiniz.
- Native olarak alert, confirm, prompt, password gibi diyalog’lar çıkabilirsiniz.
- Bu paketi en önemli kılan nokta ise vereceğiniz örnek bir görselin ekran üzerindeki ilgili x,y konumunun dönmesini sağlayabilirsiniz.
Neler yapılabileceğini özet olarak bir listede sunmaya çalıştım ama daha fazla desteklediği noktalar olduğu belirtmek isterim. Eğer tüm detayların neler olduğunu merak ediyorsanız aşağıda sizlerle paylaşmış olduğun official github sayfasından göz atabilirsiniz.
Kurulum
Paket kurulumunu da tamamladıktan sonra hemen örnek kod bloklarına geçelim.
Basitçe bir ekran çözünürlüğünü alabileceğimiz pyautogui sözdizimini görelim.
1 2 3 4 5 6 | >>> import pyautogui >>> screenWidth, screenHeight = pyautogui.size() # 2 sayısal değer döndürülüyor, ekranın genişlik ve yükseklik bilgisi dönüş oluyor. (Birden fazla monitör kullanıyorsanız ana monitör'e ait değerler dönderiliyor) >>> screenWidth 2560 >>> screenHeight 1440 |
Yapabileceğimiz diğer işlemlere ait özet aksiyonları görelim.
Genel İşlemler
1 2 3 4 5 6 7 8 9 10 11 12 | >>> currentMouseX, currentMouseY = pyautogui.position() # mouse'un mevcut x, y konumu dönderilir. >>> pyautogui.moveTo(100, 150) # Mouse'unuzu ekranınızın x=100, y=150 konumuna götürülmesi sağlanır. >>> pyautogui.click() # Mouse'un mevcut konumuna click yapılması sağlanır. >>> pyautogui.click(200, 220) # Üstteki moveTo ve click metodlarının birleşimi olarak x,y koordinatını doğrudan click metoduna verebilirsiniz. >>> pyautogui.move(None, 10) # Mouse'u sadece y koordinatından 10 pixel aşağı hareket edilmesi sağlanır. >>> pyautogui.doubleClick() # Mouse çift tıklama olayı gerçekleştirilir. >>> pyautogui.moveTo(500, 500, duration=2, tween=pyautogui.easeInOutQuad) # Animasyonel olarak 2 saniye sürecek şekilde belirttiğiniz x, y koordinatına hareket edilmesini sağlar. >>> pyautogui.write('Hello world!', interval=0.25) # Her tuşlamanın arasında çeyrek saniye ekleyerek veri girişi sağlanır. >>> pyautogui.press('esc') # Escape tuşunun simule edilmesi sağlanır. >>> pyautogui.keyDown('shift') # shift keydown event'inin simule edilmesi sağlanır. >>> pyautogui.keyUp('shift') # shift keyup event'inin simule edilmesi sağlanır. >>> pyautogui.hotkey('ctrl', 'c') # kopyalama tuş kombinasyonu olan ctrl + c tuş kombinasyonlarının simule edilmesi sağlanır. |
Diyalog İşlemleri
1 2 3 4 5 6 7 8 9 10 11 | >>> import pyautogui >>> pyautogui.alert('Bu bir alert mesajıdır.') 'OK' >>> pyautogui.confirm('Devam edeyim mi?') 'Cancel' >>> pyautogui.confirm('Seçeneği seçin.', buttons=['C#', 'Python', 'Flutter', 'React Native']) 'B' >>> pyautogui.prompt('Adınız nedir?') 'Murat' >>> pyautogui.password('Şifrenizi giriniz (metin gizlidir)') 'murat1234' |
Screenshot İşlemleri
1 2 3 4 | >>> import pyautogui >>> im1 = pyautogui.screenshot() # Ekran görüntüsü alınır sanal olarak im1 değişkeninde tutulur. >>> im1.save('my_screenshot.png') # Sanal olarak im1 değişkeninde duran ekran görüntüsü my_screenshot.png adıyla kaydedilir. >>> im2 = pyautogui.screenshot('my_screenshot2.png') # Üstteki 2 komutun birleşimi olarak doğrudan my_screenshot2.png adıyla kaydedilir. |
Şimdi bir örnek gerçekleştireceğiz. Dosya gezgini ekranımızda sol üstte yer alan Dosya butonununun ekran üzerindeki x, y konumunu alıp tıklama senaryosunu gerçekleştirelim. Altta buton.png ekran görüntüsünü ayrıca paylaştım. Bu dosya üzerinden x,y konumunu bulacağız.
1 2 3 4 5 | >>> import pyautogui >>> buttonx, buttony = pyautogui.locateCenterOnScreen('buton.png') # x, y koordinatı geri dönderilir >>> buttonx, buttony (1441, 582) >>> pyautogui.click(buttonx, buttony) # görselle eşleşen konumun ortasına tıklanma işlemi gerçekleştilir. |
Peki, ben PyAutoGUI’yi nasıl bir ihtiyaç doğrultusunda kullandım? Youtube videoları attığımızda Captions denilen videoları parçalara ayıran ayrı ayrı başlıklar belirlememiz gerekiyor videoyu editlediğim yazılım üzerinden her bir ilgili yere marker ve açıklama koyuyorum. Video edit bittikten sonra marker’ların açıklamalarını tek tek almam gerekiyor. Bu marker sayılarının sayısı fazla olduğunda oldukça zahmetli olabiliyor tek tek alıp youtube’un istediği formata çevirmek. Burada yazılımcılığı konuşturup işi kolaylaştırmak için böyle bir yola girdim ve PyAutoGUI ile tanıştım. Hadi gelin yaptığım bu mini uygulamanın ne yaptığını ve sonuç olarak bana ne verdiğini görelim.
PyAutoGUI ile ilgili detaylı bilgi için https://pyautogui.readthedocs.io/en/latest/ adresine göz atabilirsiniz.
📚 Python PyAutoGUI Benzeri Kaynaklar
✍ Lütfen olumlu-olumsuz tüm görüşlerinizi bana yorum yada mail yolu ile iletmeyi ihmal etmeyin.
🔗 Sosyal medya kanallarından makaleyi paylaşarak destek olursanız çok sevinirim.
👋 Bir sonraki makalede görüşmek dileğiyle.
İşime yaradı teşekkür ederim
Teşekkürler dostum