web-dev-qa-db-fra.com

différence entre les annotations @FindAll et @FindBys dans la fabrique de pages du pilote Web

Veuillez expliquer la différence entre les annotations @FindAll et @FindBys dans le concept d'usine de page du pilote Web.

17
Vikas

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.

21
san1deep2set3hi

@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;

allElementsInList contient tous les éléments ayant className="two" à l'intérieur id="one"

16
Vignesh Paramasivam

pour le dire en termes simples, @FindBys a une relation conditionnelle AND parmi les @FindBy tandis que @FindAll a OR relation conditionnelle.

7
BuBu

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")})
6
Zach