我們使用硒進行測試並使用頁面對象設計。也就是說,我們有一個庫文件,其中包含我們網站上某個頁面的所有功能。通過「功能」,我也意味着進程 - 我們有一個「頁面對象」庫,用於「登錄」,「註冊」......這些不是真正的頁面。多個項目中的頁面對象設計模式
當我們有多個具有相同功能的項目時,問題就會出現。例如,我們有一個我們網站的移動版本,一個ipad版本......高級別流程保持不變(例如,登錄,您仍然:1)填寫用戶名2)填寫密碼3)點擊輸入),但xpaths在網站之間發生變化。在大多數情況下,測試是相同的,除了極少數差異(例如,在登錄移動設備上,您沒有4)tick請記住我)。
我們有一個涉及頁面對象繼承的解決方案(我將說明主要的想法)。我很樂意聽到你如何解決這個問題。
我們的解決方案:
- 我們說唱硒對象與我們所說的用戶對象
- 每個項目獲得它自己的用戶:即mobileUser,ipadUser等。他們都繼承父(抽象)用戶。
- 我們的庫文件是相互繼承的類。
- 由於所有項目的「主」腳本都是相同的,因此我們爲每個項目調用相同的一段代碼,每次給它一個不同類型的用戶。
- 由於每個項目的用戶,我們的「進口」正確的庫通過用戶
例如文件:
def testLogin(user):
user.lib.Login.LoginAction("username", "password")
庫名稱是「登錄」和我們想要的功能打電話是「LoginAction」。如果user
是移動用戶,那麼Login
將成爲移動登錄庫。如果user
是一個ipad用戶,它將成爲ipad登錄庫,依此類推。
雖然看起來我們已經找到了解決這個問題的辦法,但是出來的代碼有點意大利麪。我很樂意聽到有關如何改進以及如何解決問題的建議。