1

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

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的初学者。提前致谢。

4

1 回答 1

0

如果您的页面不共享公共元素,则此设置没有意义。而是创建一个辅助类来为您执行方法逻辑,您将在其中传递WebElements. 类似于以下内容:

您的代表页面/视图的类:

public class Bar {

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

}

public class Baz {

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

}

您的实用程序类:

public class SeleniumUtil {

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

}
于 2013-10-12T17:32:52.447 回答