Selenium FindBy在抽象类中的注释

时间:2013-10-12 17:08:00

标签: java selenium abstract-class

我正在研究Selenium for Java中的测试自动化框架。我的情况会有不同的页面共享非常相似的功能。我想出了一个创建抽象类的想法,它有一些常见的实现,如下所示:

abstract class Foo{

    // this is the problem, how to annotate below elements?
    // at this point there is now way to know "how" and "using"
    // @FindBy(how = ???, using = ???)
    private WebElement element1;
    // @FindBy(how = ???, using = ???)
    private WebElement element2;

    public void setElement1(String v){
        this.element1.sendKeys(v);
    }

    public void clickElement2(){
        this.element2.submit()
    }
}

public class Bar extends Foo{
    ...
}

public class Baz extends Foo{
    ...
}

我希望避免为每个页面实现相同的结构。有一个聪明的方法吗?我是Java的初学者。提前谢谢。

1 个答案:

答案 0 :(得分:0)

如果您的网页不共享公共元素,则此设置没有意义。而是创建一个辅助类来为您传递方法逻辑,您将传递WebElement s。有点像:

代表页面/竞争的类:

public class Bar {

    @FindBy(how = How.ID, using = "myIdForElement1")
    private WebElement element1;

}

public class Baz {

    @FindBy(how = How.ID, using = "myIdForElement2")
    private WebElement element2;

}

你的util类:

public class SeleniumUtil {

    public static void setElement1(WebElement el, String value){
        el.sendKeys(value);
    }

}