Appium ile U?tan Uca G?rüntü ??leme ?al??mas?
Bu makale, Appium kullanarak bir Android emülat?ründe TicTacToe oyununun test otomasyonunu detayland?rmaktad?r. Ekran g?rüntüleri alarak, oyun tahtas?ndaki bo? hücreleri tan?mlayarak ve kullan?c? etkile?imlerini simüle ederek otomasyonu nas?l ger?ekle?tirece?imizi anlataca??z.
Kurulum ve Yap?land?rma
PowerShell üzerinden gemlerin derlenmesi i?in devkit ile kurulmu? olan enviroment yollar?n? ayarlamal?y?z. ?ünkü kullanaca??m?z baz? kütüphaneler C derleyicisi ile etkile?ime girecektir.
?ncelikle g?rüntü i?leme i?in rmagick kütüphanesini eklemeliyiz. B?ylece g?rüntülerin yeniden boyutland?r?lmas? formatlanmas? i?lemlerini ger?ekle?tirebiliriz.
?kinci ba??ml?l???m?z chunky_png kütüphanesidir. ChunkyPNG, PNG g?rüntü dosyalar?n? okumak ve yazmak i?in kullan?lan saf Ruby ile yaz?lm?? bir kütüphanedir.
Bu ?al??mada bilgisayara kar?? rastgele bo? hücrelere t?klayan bir otomasyon ile oyun oynamay? ama?l?yoruz ancak burada hücre de?erinin yani bo? olup olmad???n? dü?ündü?ümüzde g?rüntü üzerinden bir yol ?izmemiz gerekiyor. Yakla??m?m?z ?u ?ekilde olacak;
Ad?mlar?m?z? a?ama a?ama ger?ekle?tirelim.
?ncelikle hücrelerimizin benzersiz bir durumu olmad??? i?in hücrelerin koordinatlar?n? json data i?erisinde depolayaca??m
Gerekli koordinatlar? ilgili class i?erisinden okumak i?in;
Bo? hücreleri tespit etmek i?in ekran g?rüntüsü al?p g?rüntüyü k?rpaca??m
Burada x ve ye koordinatlar? g?rüntünün sol üst k??e noktas?n? referans g?stererek yükseklik ve geni?lik olarak ne kadar kayd?raca??m?z? piksel olarak yazaca??z. Bunun i?in paint gibi bir programla ekran g?rüntüsünün koordinatlar?n? kendi testinize g?re ayarlayabilirsiniz.
Art?k elimizde k?rp?lm?? bir g?rüntü var.
?imdi bu kareleri ayr? ayr? ele alaca??m?z i?in yapmam?z gereken hepsini farkl? bir adla kaydetmek.
Resimleri 3x3 olacak sekilde e?it bi?imde b?ldük ancak dosyalar? jpeg kaydetmemin nedeni g?rüntüyü k?rparken kay?p ya?amak istememem. O nedenle g?rüntüyü ikili koda d?nü?türüp to_blob ile i?lemden ge?irdim. G?rüntü k?rp?ld?ktan sonra art?k png olarak kaydedip yoluma devam ediyorum.
?imdi bo? hücrelerin bir listesini tutmam gerekiyor. ChunkyPNG kütüphanesi renkleri RGB olarak (Red ,Blue, Green) say? de?erlerine ay?r?yor. Biz burada renk de?erini 1000'in alt?nda yani bo? oldu?unu dü?ündü?ümüzde art?k rengi hex koduna cevirip set ediyoruz. Sonu?ta boolean olarak d?nü? alaca??z.
B?lmü? oldu?umuz kareleri tek tek ele al?p is_blank_cell methoduyla kontrol edip bo?sa array i?ine ekleyece?iz.
Bo? hücreleri tespit etti?imize g?re onlara dokunabiliriz. Bunun i?in ayr? bir s?n?f olusturdum.
Burada kutuya_dokun fonksiyonu verilen kutu ad?n? alarak json dosyas?ndan symbol olarak ald??? key'in koordinat olarak value'suna dokunacak ?ekilde ayarland?. Art?k oyunumuza player 1 elementi g?ründü?ü sürece devam edece?iz ?ünkü oyun bitince bu element g?rünmeyecek.
Oyunun sonland???n? do?rulay?p bitiriyoruz. ?lgili test ad?mlar? ise ??yle
Proje github baglantisini birakiyorum. Sanal cihaz ozellikleri asagidadir.
Ilgili video linki buradadir. https://youtu.be/xgRhckn0VHI