UI 自動化測試使用 Sikuli 操作介紹 Part 3 – 點選多個相同元件

當我們使用 Sikuli 來撰寫點選某個元件時,而這個元件可能有好幾個時,那我們該如何寫這個測試呢?

假設我們要點選如下圖所示的所有複選框 (checkbox),將所有複選框點打勾選取,圖中共有五個複選框。

sikuli.p3.1

直覺上可能的第一個想到的方法就是,透過 click 函式一個一個慢慢點選,程式碼如下所示:

sikuli.p3.2

這個方法雖然可行,但程式碼相當冗餘,重複的程式寫了共寫了五次,如果今天要點選更多的複選框,顯得這方法就不是很好,回想一下上一篇 UI 自動化測試使用 Sikuli 操作介紹 Part 2, 文中有介紹到如果要執行重複的動作我們可以使用迴圈流程控制,來減少程式的重複性。

我們可將上方的程式進一步的修改,改成使用 for 迴圈流程控制,迴圈重複執行五次來點選複選框,程式如下所示:

sikuli.p3.3

經過修改後,程式碼很明顯的精簡了非常多,也解決上一個程式對於要點選更多的複選框的問題,只要修改要執行幾次迴圈次數即可。

但這樣實作還是有問題,如果今天網頁上的複選框增加或減少時,那上面的程式就無法應付這樣的改變,因為我們不管測試的使用者介面為何,都是固定要找尋五次複選框並點擊它,很顯然的這樣的程式無法應變這種情況。

那我們有什麼辦法解決這問題?

我們可以使用 findAll() 函式來解決這個問題,findAll() 可以一次性把所有相同按鈕,或者圖案一次將全部的元件找到,這樣找到的按鈕就會是一個集合,這些被找尋到的元件就會被儲存在一個陣列 (Array) 裡,此時我們就可以使用流程控制中的 foreach 迴圈來取出這些元件後,再做點擊的動作,修改後的程式碼如下所示:

sikuli.p3.4

參考文章:

[1] 程式扎記: [UI Automation] Sikuli 的入門使用

[2] Sikuli Script – Home

廣告

One thought on “UI 自動化測試使用 Sikuli 操作介紹 Part 3 – 點選多個相同元件

發表迴響

Please log in using one of these methods to post your comment:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s