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