我有一个小问题,在 Selenium 和 Page Factory 中的以下行之间有什么区别?
@FindBy(id = "foobar") WebElement foobar;
和
@FindBy(how = How.ID, using = "foobar") WebElement foobar;
我有一个小问题,在 Selenium 和 Page Factory 中的以下行之间有什么区别?
@FindBy(id = "foobar") WebElement foobar;
和
@FindBy(how = How.ID, using = "foobar") WebElement foobar;
根据注释类型 FindBy的JavaDocs两个表达式:
@FindBy(id = "foobar") WebElement foobar;
和
@FindBy(how = How.ID, using = "foobar") WebElement foobar;
两个表达式都指向同一个元素。
如何在org.openqa.selenium.support.How
、扩展java.lang.Enum<How>
和实现中定义java.lang.Comparable<How>
。How的枚举常量如下:
根据计数器问题,如果您查看枚举的源代码,它是如何定义的:
public enum How {
CLASS_NAME {
@Override
public By buildBy(String value) {
return By.className(value);
}
},
CSS {
@Override
public By buildBy(String value) {
return By.cssSelector(value);
}
},
ID {
@Override
public By buildBy(String value) {
return By.id(value);
}
},
ID_OR_NAME {
@Override
public By buildBy(String value) {
return new ByIdOrName(value);
}
},
LINK_TEXT {
@Override
public By buildBy(String value) {
return By.linkText(value);
}
},
NAME {
@Override
public By buildBy(String value) {
return By.name(value);
}
},
PARTIAL_LINK_TEXT {
@Override
public By buildBy(String value) {
return By.partialLinkText(value);
}
},
TAG_NAME {
@Override
public By buildBy(String value) {
return By.tagName(value);
}
},
XPATH {
@Override
public By buildBy(String value) {
return By.xpath(value);
}
},
UNSET {
@Override
public By buildBy(String value) {
return ID.buildBy(value);
}
};
public abstract By buildBy(String value);
}
因此,例如,当您按照以下行结合ID实现How时:
@FindBy(how = How.ID, using = "foobar") WebElement foobar;
how = How.ID 在功能上返回By.id(value)并且等同于以下行返回的内容:
@FindBy(id = "foobar") WebElement foobar;
因此,我们可以得出结论,@FindBy(id = "foobar")和@FindBy(how = How.ID, using = "foobar")只是实现相同结果的两种不同方式,并且可以根据用户的选择使用。