2011-05-13 87 views
3

使用GEB我正在使用頁面對象模式來靜態地封裝有關不同頁面的信息。使用GEB和Cucumber封裝頁面中的邏輯

然後我重構了我的GEB代碼以便從一個單獨的類中使用,這樣我就可以使用方法調用來封裝常用命令。

例如我會有一個方法login(),它將調用相應的GEB代碼來登錄到我正在測試的網站。然後我會在TestHelper類中使用方法調用的其他常用函數。

我想將這些常用功能移到他們所處理的頁面上。例如,搜索頁面將具有搜索方法,登錄頁面將具有登錄方法。通過這種方式,我可以建立一個包含所有通用功能的頁面庫,以用於多個GEB項目。現在要做到這一點,每個頁面必須有一個geb.Browser的句柄,因此我現在必須在測試設置中實例化每個頁面。通過這樣做,我不再能夠使用標準頁面對象模式。

to ReviewQueuePage 
assert at(ReviewQueuePage) 

上面的代碼會拋出一個空指針作爲對象不再能以靜態方式意味着我不得不更改代碼以

go ReviewQueuePage.url 

這將刪除的所有功能進行訪問使用該類作爲一個頁面。

有沒有人有任何解決方案封裝每個頁面的數據的方式,它不會導致頁面行爲不同。

回答

1

我有點困惑。您是否正在尋找一種方法在多個頁面之間共享通用代碼?這是我多次閱讀您的問題後得到的印象,但我不太確定。你提到了「常用功能」。那麼,通用組件可以使用Module對象進行封裝。在使用公共組件的每個頁面中,只需引用頁面對象中的模塊對象即可。

+0

,對不起,我希望對他們採取行動時的頁面封裝常用的功能,然後共享之間不同項目的頁面。我會看看Module對象。 – DeliveryNinja 2011-05-18 16:05:46

+0

在繼續進行任何開發工作之前,請查看整個Geb手冊(封面)。如果您使用Geb,這是一個必讀內容。不允許瀏覽。 – 2011-05-20 13:31:38

相關問題