我正在研究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的初学者。提前谢谢。
答案 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);
}
}