@FindBy: It is an alternative mechanism for locating the element or a list of elements. Used in conjunction with PageFactory this allows users to quickly and easily create PageObjects. (api link)
Example:
For example, these two annotations point to the same element:
Syntax 1: @FindBy(id = "foobar")
WebElement foobar;
@FindBy(how = How.ID, using = "foobar") // How is an enum, ID is an Enum constant
WebElement foobar;
and these two annotations point to the same list of elements:
Syntax 2: @FindBy(tagName = "a")
List<WebElement> links;
@FindBy(how = How.TAG_NAME, using = "a")
List<WebElement> links;
Note: Alternative way of @FindBys: driver.findElements(new ByChained(by1,by2)); (where by1 -> By by1=By.id("");, by2 -> By by2=By.id("");)
@FindBys: Find for all DOM elements that matches each of the locators in sequence.(api link)
Example:
@FindBys({@FindBy(id = "foo"),
@FindBy(className = "bar")})
private List<WebElement> list;
@FindAll: Search for all elements that match any of the FindBy criteria. (api link)
Example:
@FindAll({@FindBy(id = "foo"),
@FindBy(className = "bar")})
private List<WebElement> list;
@CacheLookup: as the name suggests helps us control when to cache a WebElement and when not to. This annotation when applied over a WebElement instructs Selenium to keep a cache of the WebElement instead of searching for the WebElement every time from the WebPage. This helps us save a lot of time. (api link)
Example:
@CacheLookup
@FindBy(how=How.ID, using="foo")
private WebElement element;
Hope this Helps!!!
0 comments:
Post a Comment