Robotik Süreç Otomasyonunda PyAutoGUI Kütüphanesi

Robotik süreç otomasyonunda geliştirmeye yeni başlayanlar için daha önce web otomasyonu, düzenli ifadeler, OCR, e-mail dinleme konularında yazılar yazmıştık. Şimdi de Robotik Süreç Otomasyonunda PyAutoGUI Kütüphanesi hakkında detayları anlatacağız. Robotik süreç otomasyonları geliştirirken karşımıza sürekli web uygulamaları çıkmaz, duruma göre masaüstü uygulamaları üzerinde de robotik süreç otomasyonları tasarlıyoruz. Bu yazımızda bunları tasarlarken kullandığımız bir kütüphane olan PyAutoGUI’a değineceğiz.

PyAutoGUI fare ve klavye hareketleri ile uygulamaları kontrol etmemizi sağlayan bir kütüphanedir. Burada web otomasyonlarındaki gibi elimizde tag, id, class gibi değişkenler bulunmamaktadır. Bu nedenle bu kütüphanedeki en önemli durum, görseller üzerinden işlem yapabilmemizdir. Masaüstü otomasyonlarının web otomasyonlarına göre bazı dezavantajları bulunmaktadır. Buradaki en büyük dezavantajımız robotun web otomasyonuna göre belirgin bir şekilde yavaş kalması olacaktır. Ancak tecrübe ve belli pratikler sayesinde bu hızı belli bir seviyeye yükseltip aldığımız verimi arttırabiliyoruz. Peki bu kütüphane ile neler yapabiliriz?

PyAutoGUI kütüphanesi ile fareyi hareket ettirme, istenilen yere tıklama, çift tıklama, kaydırma; klavyeden yazı yazma, komutlar gönderme; ekran görüntüsüne sahip olduğumuz buton, pencere ve simgeleri bulma ve bu gibi alanların üzerinde belirli işlemler yapabiliriz.

Buradaki robotu okuma yazma bilmeyen bir çocuğu benzetebiliriz aslında, telefon veya bilgisayar kullanırken bizi izleyip ardından yaptıklarımızı tekrar eden bir çocuk. İhtiyacı olan tek şey taklit yeteneği ve görseller ki; robotlarımızı da birer taklit aracı olarak düşünebiliriz.

Komut sayısı açısından az komut bulunan ancak istediklerimizi çok rahat yerine getirebilecek bir kütüphaneden bahsediyoruz. Bu kütüphanede bulunan komutlara biraz değinelim.

PyAutoGUI Kütüphanesinde Bulunan Komutlar

pyautogui.moveTo(x, y)

Komutu fareyi ekranda istediğimiz x ve y koordinatlarına götürür. Buradaki x ve y değişkenleri minimum olarak 0, maksimum olarak kullandığımız ekran çözünürlüğü kadar değerler alabilir.

pyautogui.click(x, y)
pyautogui.rightClick(x, y)
pyautogui.middleClick(x, y)
pyautogui.doubleClick(x, y)
pyautogui.tripleClick(x, y)

Komutları farenin tıklama komutlarıdır. Gördüğünüz üzere ekranda istediğimiz koordinatlarda istediğimiz şekilde komutlar verebiliyoruz.

pyautogui.typewrite('Hello world!', interval=4)

Klavye komutu sayesinde yazmak istediklerimizi yazabiliyoruz. “interval” değişkeni harfler arası bekleme süresini saniye olarak belirtmektedir.

pyautogui.hotkey('ctrl', 'a')#Tümünü seç
pyautogui.hotkey('ctrl', 'c')#Kopyala
pyautogui.hotkey('ctrl', 'v')#Yapıştır

Şeklinde aynı anda iki tuşa basabiliyoruz.

pyautogui.keyDown('c')
pyautogui.keyUp('c')

Tek bir tuşa basma ve tuşu serbest bırakma komutları bu şekildedir.

pyautogui.alert('This displays some text with an OK button.')
pyautogui.confirm('This displays text and has an OK and Cancel button.')
pyautogui.prompt('This lets the user type in a string and press OK.')

Komutları ile bilgi verme, onay isteme veya girdi isteme işlemlerini yaptırabiliyoruz.

pyautogui.locateOnScreen('cc.png')

Komutu ile ekranda bir görselin olup olmadığına bakıyoruz. Robotik süreç otomasyonları yazarken görseller ile işlem yaptıracağımızı söylemiştik. Ekranlar sürekli olarak aynı koordinatlarda açılmadığı için, öncelikle işlem yapacağımız kısmın koordinatlarını bulmalıyız. “locateOnScreen” komutu bize görselin olup olmadığını bildirir. Eğer görsel var ise bulduğu ilk görselin koordinatlarını döner. “locateAllOnScreen” komutu ise ilgili görselden birden fazla olması durumunda hepsine ait koordinatları döner.

pyautogui.click('cc.png')
pyautogui.rightClick('cc.png'),

Buradaki komutlarda ise fareye direkt koordinatlar vermek yerine görseli verdiğimizde kendisi görselin koordinatlarını bulup gerekli komutları yerine getirebilir.

Bu kütüphaneyi özellikle görseller ile kullanırken dikkat etmemiz gereken bir durum bulunmaktadır. Geliştirme yaptığımız makine ile uygulamayı kullanacağımız makine arasında ekran çözünürlüğü farkı bulunması durumunda, uygulamayı kullanacağımız makinede arayacağımız görsellerin görüntülerini yeniden almamız gerekecektir. Görüntülerdeki en ufak değişiklikler kütüphane için olumsuz sonuçlar yaratmaktadır. Uygulamalarımızı tasarlarken bu konuya ayrıca dikkat etmemiz gerekir. Ayrıca ekranda arayacağımız görüntünün bir benzerinin olmaması da önemli bir durumdur. Yoksa istediğimiz komut yerine başka bir komut meydana gelebilir.

Bu yazımızda Robotik süreç otomasyonlarında kullanılan bir kütüphaneye daha değindik. Tasarladığımız robotlara göre kütüphane ihtiyaçlarımız değişebilmektedir. Bizim amacımız ilgili robot için en doğru ve verimli kütüphaneyi kullanmaktır. Bunun için de sürekli yeni kütüphaneleri, yeni dilleri ve özellikleri keşfetmeye çalışıyoruz. Akabinde bulduklarımızı basit bir şekilde paylaşmaya çalışıyoruz. Bundan sonrası pratiklik ve deneyimle devam ediyor. Bir sonraki yazımızda görüşmek dileğiyle…



Bir cevap yazın