我有两个类,一个扩展另一个,它们列在下面:
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
}
}
所以在app中我测试的大多数页面只有1个表,但在某些情况下有2个表(一个是隐藏的,具体取决于屏幕大小)所以我希望能够覆盖这个表中的表定义指向一个特定的表,我可以在不重写getRow方法的情况下执行此操作,还是需要重写那些?
举一个例子说明我如何称呼这个alswell:
at SomePage
getRow(0)
这可行,但它使用表Navigator的TabledPage定义而不是somePage定义,我想知道是否有办法让我使用其他定义
答案 0 :(得分:0)
如果您更改了Spec而不是页面中的内容,它会起作用吗?这就是我在页面中使用动态选择器的方式:
static content=
{
quantityField{$("$quantitySelector")
}
void setSelectors(tableIndex, row)
{
quantitySelector="#offerDtos$tableIndex\\.segments$row\\.quantity"
}
在我的规范中,我只是使用适当的值调用setSelectors。