2017-08-23 10 views
0

私は2クラス1を持っているが、それらは以下のとおりです他の拡張:gebでクラスを拡張するときに、 "静的コンテンツ"ブロックのコンテンツを上書きできますか?

class TabledPage extends Page { 

    static content ={ 
     table {$(By.xpath("//tbody"))} 
     headers {$(By.xpath("//thead"))} 
    } 

    Navigator gatAllRows(){ 
     return table.children() 
    } 

    Navigator getRow(int index){ 
     return table.children()[index] 
    } 

    Navigator getRow(String name){ 
     return table.children().find{it.text()==name} 
    } 

    Navigator getColumn(Navigator row, int column){ 
     return row.children()[column] 
    } 


} 

と上記のクラスを拡張し、このクラス:

class somePage extends TabledPage{ 
    static content ={ 
     table(required: false){$(By.xpath("//table[contains(@class,'w-100 table-striped wi-table-hover')]//tbody"))} // I want this to overwrite the table def in TabledPage 
    } 
} 

だから、アプリで、私は唯一のページのほとんどをテストしてい1つのテーブルがありますが、場合によっては2つのテーブルがあります(1つは画面サイズによって隠されています)ので、この場合はテーブル定義を上書きして特定のテーブルを指し示すことができます。 getRowメソッドを使用するか、それらをオーバーライドする必要がありますか?

ちょうど私がこのalswellを呼び出しています方法の例を与える:

at SomePage 
getRow(0) 

これは動作しますが、それは代わりにsomePage定義のテーブルナビゲーターのTabledPage定義を使用し、方法がある場合、私は疑問に思って私は他の定義を使用するようにします

+0

TabledModuleでテーブル定義を再定義して、さまざまなページすべてを扱うことができましたが、私が提案していることが可能であるかどうか不思議です。 – switch201

+0

テーブルナビゲータのTabledPage定義somePage定義の代わりに?コンテンツオーバーライドが期待どおりに機能することを信じています。だから私は、あなたが観察したのは、 'TabledPage'の定義が使われているのではなく、まったく別のものであるからです。 – erdi

+0

@erdiチャンスがあり、私が見つけたものをあなたに知らせるときに、これを再テストしようとします – switch201

答えて

0

コンテンツをページからではなく仕様から変更した場合は機能しますか?これは、ページ内でダイナミックセレクタを使用する方法です。

static content= 
{ 
    quantityField{$("$quantitySelector") 
} 

void setSelectors(tableIndex, row) 
{ 
    quantitySelector="#offerDtos$tableIndex\\.segments$row\\.quantity" 
} 

私の仕様では、setSelectorsを適切な値で呼び出します。

関連する問題