2014-01-23 48 views
1

我試圖創建一個頁面來擴展另一個頁面,並且當我嘗試運行我的項目時得到以下錯誤消息: groovy.lang.MissingPropertyException:沒有這樣的屬性:navLinkPage1類:myPage頁面對象擴展另一個頁面對象

import geb.Page 

    class HomePage extends myPage { 
     static url = "http://www.mywebsite.com" 
     static at = { title == "Home"} 
    } 

    class MyPage extends Page { 
     static content = { navLinkPage1 { $("#page1Link") } 
    } 

每個頁面將具有完全相同的頁面標題塊與相同的鏈接和whatnot。那麼,爲什麼我不能只創建一個頁面對象,然後在個別頁面中繼承它?或者我只是做錯了嗎?

回答

3

如果您能提供的代碼,實際使用navLinkPage1鏈接塊,我相信我們可以追蹤您的具體問題與navLinkPage1,但它聽起來像你的代碼塊是怎麼回事「to MyPage」而不是「to HomePage」。

也就是說,考慮Module Object pattern覆蓋複雜用戶界面的頁面對象模式(免責聲明:我剛剛提出了這個詞)。因此,而不是使從MyPage每一頁繼承,創造了Page S之間的(假的?)的關係,使,說,「NavigationModule」,一拉:

class NavigationModule extends Module { 
    static content = { 
     homeLink { $("a", title:"Home") } 
     contactLink { $("a", title:"Contact Us") } 
    } 
} 

class HomePage extends Page { 
    static content = { navBar { module NavigationModule } } 
} 

,並在您的測試,你會說:

to HomePage 
navBar.contactLink.click() 

就個人而言,我一直在處理類似的類模塊,並假裝其內容是私人的,只給自己訪問操作,而不是內容。因此,只能通過logIn(user,pass)方法訪問我的LoginModule,而不是直接與usernamepassword成員進行交互......但是......這可能對您無效。導航欄特別適合直接訪問。 :-)

+0

謝謝。我在手冊的頁面對象部分查找了我的答案。在閱讀完解決方案後,我最終在Modules部分找到了它。 – Szuturon

相關問題