Appium ile U?tan Uca G?rüntü ??leme ?al??mas?

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.

Siz kendi kurulum yolunuzu ayarlay?n.


?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.

rmagick kurlumu

?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;

  1. Rastgele bir hücreye t?kla ve bilgisayar?n hamlesi i?in süre ver.
  2. G?rüntü i?lemeyle bo? hücreleri tespit et.
  3. Rastgele bir hücreye dokun.
  4. Bilgisayar?n hamlesini yapmas? i?in süre ver.
  5. Player 1' elementi g?rünüyorsa 2. ve 3. ad?mlar? tekrarla
  6. Player 1' elementi g?rünmüyorsa veya bo? hücre kalmam??sa oyunun sonland???n? do?rula.

Ad?mlar?m?z? a?ama a?ama ger?ekle?tirelim.

Mevcut Uygulama g?rüntüsü


?ncelikle hücrelerimizin benzersiz bir durumu olmad??? i?in hücrelerin koordinatlar?n? json data i?erisinde depolayaca??m

hücre koordinatlar?


Gerekli koordinatlar? ilgili class i?erisinden okumak i?in;

koordinatlar? yüklüyorum

Bo? hücreleri tespit etmek i?in ekran g?rüntüsü al?p g?rüntüyü k?rpaca??m

G?rüntü k?rpma

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.

k?rp?lm?? g?rüntü

?imdi bu kareleri ayr? ayr? ele alaca??m?z i?in yapmam?z gereken hepsini farkl? bir adla kaydetmek.

kesilmi? dosyalar

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.


hücrelerin ayr? ayr? kaydedilmi? durumu

?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.

Hücrenin bo? olup olmad???n? kontrol ediyoruz.


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ücreler array

Bo? hücreleri tespit etti?imize g?re onlara dokunabiliriz. Bunun i?in ayr? bir s?n?f olusturdum.

kutuya dokunma

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.

Oyun devam ediyor
Oyun sonland?

Oyunun sonland???n? do?rulay?p bitiriyoruz. ?lgili test ad?mlar? ise ??yle

u?tan u?a test ad?mlar?

Proje github baglantisini birakiyorum. Sanal cihaz ozellikleri asagidadir.

Ilgili video linki buradadir. https://youtu.be/xgRhckn0VHI













要查看或添加评论,请登录

mustafa livdemirci的更多文章