2017-08-04 90 views
0

我在模擬複選框的頁面中有span元素。這個「複選框」是否被選中是通過賦予某個類的元素來設置的。用接口包裝返回的Geb導航器

在我的網頁,我已經得到了返回使用$()選擇這個元素(IE導航儀實例)的方法:

class MyPage extends page { 

    def getCheckbox(String searchStr) { 
     $("div.parent").find(".class-a", text: searchStr) 
    } 
    def myFunc() { 
     def cb = getCheckbox("foo") 
     if (cb.has(".class-B") { 
      // checkbox is ticked. do something... 
     } 
    } 
} 

我正在尋找一種方式來裝飾返回的對象從getCheckbox(),讓客戶希望選中該複選框的狀態可以做cb.isChecked(),而不是更晦澀has(".class-B")(IE以獲得類似的接口,以內建checkbox形式控制模塊)

有什麼建議? 謝謝!

+0

你總是可以創建一個名爲'isChecked(Navigator cb)'的方法來包裝'.has(「。class-B」)並調用它,還有一種方法可以覆蓋Navigator接口,在這種情況下你可以創建你自己的Navigator方法。這對於這樣一個簡單的事情來說似乎是一個複雜的解決方案,但是如果這是您回答問題後顯示如何覆蓋Navigator界面的問題。這是我認識你的唯一方法,就像cb.isChecked()假設cb是導航器一樣。 – switch201

回答

0

這個怎麼樣:

class CheckBoxNavigator extends NonEmptyNavigator { 
    def isChecked(){ 
     return this.has(".class-B") 
    } 
} 

然後你只需要定義複選框元素作爲「CheckBoxNavigator」,然後就可以使用isChecked()

1

你的複選框模擬span元素是總理候選人成爲一個Geb module - 簡單地定義一個模塊類,使用你想在你的包裝器上存在的方法,然後將它傳遞給代表你的span元素的導航器的Navigator的方法module()