Kamis, 21 Februari 2013

Mengubah Ukuran Window

Tutorial ini menunjukkan bagaimana menggunakan script Sikuli untuk mengubah ukuran jendela dengan menyeret pojok kanan bawah nya. Untuk melakukannya, Anda harus mengevaluasi posisi saat ini sudut layar, pindahkan pointer mouse ke titik mana klik akan diberlakukan dan kemudian melakukan satu atau lebih tindakan drag.
 
  def resizeApp(app, dx, dy):
  switchApp (app)
  corner = find(pattern(). TargetOffset(3, 14))
 
  drop_point = corner.getTarget().offset (dx, dy).
  dragDrop(corner, drop_point)
 
  resizeApp("Safari", 50, 50) 
 
Contoh ini mendefinisikan fungsi "resizeApp" untuk memperbesar jendela pada Mac, dan kemudian memanggil fungsi untuk memperbesar ukuran window Safari sebesar 50x50 piksel. Ada beberapa pendekatan untuk melakukan tugas ini. Yang paling sederhana adalah langsung mencari sudut dan tarik untuk memperbesar jendela.
 
Selain pendekatan ini sederhana, kami juga ingin menunjukkan kepada Anda cara yang lebih mungkin untuk melakukan hal yang sama. Contoh berikut menunjukkan bagaimana menggunakan spatial operator untuk memperpanjang atau membatasi wilayah pencarian Anda.
 
Pendekatan untuk menemukan sudut ini adalah untuk pertama mengidentifikasi sudut paling karakteristik dari window (sebagian besar dengan menggunakan tombol di window) dan kemudian mencoba untuk menemukan sudut lain yang relevan, untuk memastikan Anda mendapatkan titik klik yang Anda butuhkan. Strategi ini digambarkan di bawah ini. Kami ingin mencari sudut atas yang tepat, kemudian pergi ke kanan untuk menemukan sudut kanan atas, kemudian pergi ke bawah untuk menemukan sudut kanan bawah.
 
. /... / _images / Safari_spatial.png
Script yang mengimplementasikan rencana ini dapat ditulis sebagai berikut:
 
  # setShowActions(True) # men-debug
  switchApp("Safari") # mendapatkan jendela aktif frontmost Safari 
 
  clickOffsetX, clickOffsetY) = (3, 18) # dievaluasi dengan menggunakan pratinjau di IDE
  MTL = find() # Find kiri atas
  # cetak MTL, hover (MTL) # debug
 
  mtr = mTL.nearby(200).right().find() # Find kanan atas
 
  # cetak MTR, hover (MTR) # debug
  MBR = mTR.below ().find() # Find kanan bawah, pojok sasaran
  # cetak MBR # men-debug
 
  # gerakkan mouse untuk mengklik titik
  hover (mBR.getCenter().Offset(clickOffsetX, clickOffsetY))
  # exit () # men-debug
 
  mouseDown(Button.LEFT) # tekan dan tahan tombol kiri
  # menggerakkan mouse ke lokasi yang baru, dapat diulang dengan nilai-nilai lain
  mouseMove(Env.getMouseLocation().Offset(10, 10))
  mouseUp () # rilis tombol mouse
  
Alur kerja dan perpindahan mouse ke titik klik dapat dikompresi dalam satu baris (tidak ada pemeriksaan pada judul dalam kasus ini).
 
  hover(find()nearby(200).right().find()below().find().GetCenter().Offset(3, 18))

Secara umum:
  • sebisa mungkin menemukan operasi dibatasi dalam suatu region, harus berisi  match yang relevan, untuk meminimalkan risiko, bahwa sesuatu yang sama, yang lain, ditemukan. Di atas kondisi ini kecepatan script ini dicapai.
  • contoh ini dengan mudah bisa berubah menjadi fungsi pembantu, di mana semua gambar dan variabel dapat diberikan sebagai parameter.
  • titik klik dievaluasi dalam IDE menggunakan jendela pratinjau, tapi kemudian dimasukkan ke dalam kode untuk fleksibilitas dan mudah dibaca.
  • fungsi tingkat rendah mouse yang digunakan, sehingga Anda akan lebih fleksibel dengan gerakan berkelanjutan.
  • pendekatan pengembangan Sikuli, terlebih dahulu mendapatkan segalanya berjalan untuk mengevaluasi sudut yang relevan. Dalam fase ini, komentar memiliki "# debug". Semua tanda komentar akan memiliki umpan balik. Terutama setShowActions() dan exit() sangat membantu.

Tidak ada komentar:

Posting Komentar