2011-05-25 85 views
2

我們使用硒進行測試並使用頁面對象設計。也就是說,我們有一個庫文件,其中包含我們網站上某個頁面的所有功能。通過「功能」,我也意味着進程 - 我們有一個「頁面對象」庫,用於「登錄」,「註冊」......這些不是真正的頁面。多個項目中的頁面對象設計模式

當我們有多個具有相同功能的項目時,問題就會出現。例如,我們有一個我們網站的移動版本,一個ipad版本......高級別流程保持不變(例如,登錄,您仍然:1)填寫用戶名2)填寫密碼3)點擊輸入),但xpaths在網站之間發生變化。在大多數情況下,測試是相同的,除了極少數差​​異(例如,在登錄移動設備上,您沒有4)tick請記住我)。

我們有一個涉及頁面對象繼承的解決方案(我將說明主要的想法)。我很樂意聽到你如何解決這個問題。

我們的解決方案:

  • 我們說唱硒對象與我們所說的用戶對象
  • 每個項目獲得它自己的用戶:即mobileUser,ipadUser等。他們都繼承父(抽象)用戶。
  • 我們的庫文件是相互繼承的類。
  • 由於所有項目的「主」腳本都是相同的,因此我們爲每個項目調用相同的一段代碼,每次給它一個不同類型的用戶。
  • 由於每個項目的用戶,我們的「進口」正確的庫通過用戶

例如文件:

def testLogin(user): 
    user.lib.Login.LoginAction("username", "password") 

庫名稱是「登錄」和我們想要的功能打電話是「LoginAction」。如果user是移動用戶,那麼Login將成爲移動登錄庫。如果user是一個ipad用戶,它將成爲ipad登錄庫,依此類推。

雖然看起來我們已經找到了解決這個問題的辦法,但是出來的代碼有點意大利麪。我很樂意聽到有關如何改進以及如何解決問題的建議。

回答

1

我們有同樣的問題,我們的方式是繼承。創建幾個普通的類作爲超類,並且每當你想做出小的改變就可以擴展它,並用新的XPATH創建子類。 我們也嘗試使用java反射來解決多個類的開銷,但由於我們主要是一個QA團隊,所以我們對反射不太滿意。