0
我正在描述使用Selenium的網格或表格視圖。 我想要做的是開發一個抽象類表,從中繼承另一個類。 這裏的理念是:Selenium中的通用字段初始化
AbstractTable類:
public abstract class AbstractTable extends HtmlElement {
public abstract Class<? extends AbstractRow> getHeader();
public abstract Class<? extends AbstractRow> getRow();
private Class<? extends AbstractRow> tableHeader = getHeader();
private Class<? extends AbstractRow> tableRow = getRow();
public AbstractTable() { // init method }
}
AbstractRow類:
@FindBy(xpath = ".//thead/tr")
public abstract class AbstractRow extends HtmlElement {
@Override
public Rectange getRect() { return null; }
}
MyTable的類:
class MyTable extends AbstractTable {
@Override
public Class<? extends AbstractRow> getHeader() { return TableHead.class; }
@Override
public Class<? extends AbstractRow> getRow() { return TableRow.class; }
@FindBy(xpath = ".//thead/tr")
public static class TableHead extends AbstractRow { // some fields }
@FindBy(xpath = ".//tbody/tr[not(@class = 'clicked')]")
public static class TableRow extends AbstractRow { // some fields }
}
想象一下,有一個以上的類,這是類似於MyTable。
所以,我的主要問題是:我的MyTable類的內部類將被裝飾和初始化?或者,如果沒有,那麼也許有辦法做到這一點更有效率?
注實現:從抽象方法初始化私有字段是一個非常糟糕的主意。這與從構造函數調用可覆蓋的方法完全相同(因爲這實際上就是你在做什麼)。相反,注入'Class <?的實例?將AbstractRow>'(或'AbstractRow'的實例)擴展爲構造函數參數。 –
好的,我會以此作爲記錄。也許你可以給我建議一個更有效的方法來做到這一點?問題是無法在Selenium中使用泛型類定義。 –
您應該添加一些關於您試圖解決的場景的細節,如何計劃使用這些類,等等。 – JeffC