selenuim-webdriver註解之@FindBy、@FindBys、@FindAll的區別
selenium-webdriver中獲取頁面元素的方式有很多,使用註解獲取頁面元素是其中一種途徑,
方式有3種:@FindBy、@FindBys、@FindAll。下文對3中型別的區別和使用場景進行介紹
1)@FindBy
@FindBy(id= "A")
private WebElement A;
2)@FindBys
@Findbys({
@FindBy(className = "A"),
@FindBy(className = "B")
})
public WebElement AB;
@FindBys 相當於是取交集,是先根據第一個註解獲取到對應元素,然後根據第二個註解再帥選出對應的頁面元素,。如先找到符合classname=A的元素,再在這些元素集中找到classname=B的所有元素
就像如下操作:
driver.findElement(<By_FindByA>).findElement(<By_FindByB>).
3)@FindAll
@FindAll({
@FindBy(id = "A"),
@FindBy(id = "B")
})
public List<WebElement> aAndB;
@FindAll相當於是取並集,如找到id=A和id=B的所有元素
例:
public class API_BatchSettlementIndexPage {
protected WebDriver dr = null;
/**
* username
*/
@FindBy(name = "username")
protected WebElement input_username;
/**
* password
*/
@FindBy(name = "password")
protected WebElement input_password;
/**
* submit
*/
@FindBy(xpath = "//input[@type='submit']")
protected WebElement button_submit;
public API_BatchSettlementIndexPage(WebDriver dr) {
this.dr = dr;
this.load();
PageFactory.initElements(dr, this);
}
/**
* 載入
*/
protected void load() {
dr.get(Environment.get("fo.mock.batch.settlement.url"));
}
/**
* 登入
* @param username
* @param password
*/
public void login(String username,String password){
this.input_username.sendKeys(username);
this.input_password.sendKeys(password);
this.button_submit.click();
}
}