該腳本中,在 droppable 數組中定義需要被移入 Trash 的圖片,以 Trash 區域的標題欄為搜索目標,用 find() 方法獲得 Trash 區域的 Match 類型對象,作為目標區域參數傳入 moveTo() 方法。其中 moveTo() 方法查找當前屏幕顯示中所有與 obj 參數所傳入的圖形相匹配的對象,將其拖拽至 des 所指定的區域。其實現如圖 8 所示。
圖 8. moveTo() 方法的實現
在該方法中,對于圖片縮略圖應用 exists() 方法進行檢索時,進行了圖像相似度(取值區間為 0~1)的調整,Sikuli 中缺省情況下的相似度設置為 0.7,為了在圖片內容類似的情況下進行正確的區分,可用到 similar() 方法適當提高檢索時的相似度,以避免匹配到其他類似區域。
若需確認當前相似度設置下,圖像的匹配情況,可在腳本中單擊截圖對象,激活 Pattern Settings 對話框。在本例中,如單擊第 25 行 droppable 中的第二張截圖,則彈出對話框如圖 9 所示。圖中(1)中所標識區域中,有兩幅圖片分別被紅色和紫紅色高亮顯示。表示在當前的相似度下,這兩幅圖片均被識別為要尋找的對象。顏色越偏紅,則圖片與截圖的相似度越高,越近似紫色則相似程度越低。調節(2)所標示的 Similarity 滑塊,改變相似度設置,則可看到預覽區域中的匹配區域的數量及顏色變化,從而以此為依據選擇適當的相似度設置,使得程序可以地定位目標區域。
圖 9. Pattern Settings 對話框