Veuillez expliquer la différence entre les annotations @FindAll et @FindBys dans le concept d'usine de page du pilote Web.
Nous pouvons utiliser ces annotations dans les cas où nous avons plusieurs critères pour identifier un ou plusieurs objets WebElement.
@ FindBys: Lorsque les objets WebElement requis doivent correspondre à tous les critères donnés, utilisez l'annotation @FindBys
@ FindAll: Lorsque requis, les objets WebElement doivent correspondre à au moins un des critères donnés, utilisez l'annotation @FindAll
Usage:
@FindBys( {
@FindBy(className = "class1")
@FindBy(className = "class2")
} )
private List<WebElement> elementsWithBoth_class1ANDclass2;
Ici, List elementsWithBothclass1ANDclass2 contiendra tout élément WebElement qui satisfait aux deux critères.
@FindAll({
@FindBy(className = "class1")
@FindBy(className = "class2")
})
private List<WebElement> elementsWithEither_class1ORclass2
Ici, List elementsWithEither_class1ORclass2 contiendra tous les éléments WebElement qui satisfont à l'un des critères.
@FindAll
peut contenir plusieurs @FindBy
et renverra tous les éléments qui correspondent à n'importe quel @FindBy
dans une seule liste.
Exemple:
@FindAll({
@FindBy(id = "one"),
@FindBy(id = "two")
})
public List<WebElement> allElementsInList;
Tandis que,
@FindBys
renverra les éléments selon la façon dont @FindBy
spécifié à l'intérieur.
@FindBys({
@FindBy(id = "one"),
@FindBy(className = "two")
})
public List<WebElement> allElementsInList;
Où allElementsInList
contient tous les éléments ayant className="two"
à l'intérieur id="one"
pour le dire en termes simples, @FindBys a une relation conditionnelle AND parmi les @FindBy tandis que @FindAll a OR relation conditionnelle.
Regardez le JavaDocs :
Type d'annotation FindBys
@Retention(value=RUNTIME)
@Target(value={FIELD,TYPE})
public @interface FindBys
Used to mark a field on a Page Object to indicate that lookup should use a series of @FindBy tags in a chain as described in ByChained Eg:
@FindBys({@FindBy(id = "foo"),
@FindBy(className = "bar")})
Type d'annotation FindAll
@Retention(value=RUNTIME)
@Target(value={FIELD,TYPE})
public @interface FindAll
Used to mark a field on a Page Object to indicate that lookup should use a series of @FindBy tags It will then search for all elements that match any of the FindBy criteria. Note that elements are not guaranteed to be in document order. Eg:
@FindAll({@FindBy(how = How.ID, using = "foo"),
@FindBy(className = "bar")})