Fondamentalement, je voudrais faire une assertion (à partir de ma classe de test) qu'un WebElement contient du texte(). Puisque tous mes WebElements sont définis dans mon page.class, je pense que je dois les rendre publics pour le faire.Utilisation de WebElements à partir des POM PageFactory dans ma classe de test
Je rencontre quelques problèmes avec le pilote web et les éléments, et je pense que c'est peut-être parce que plusieurs classes de test accèdent à WebElements à partir de la classe page simultanément. Ma question est: Y a-t-il une raison pour que WebElements soit privé?
Exemple de code:
Tous les tutoriels PageFactory j'ai vu dire de faire vos WebElements privé, comme
@FindBy(xpath = "//*[@id='searchStringMain']")
private WebElement searchField;
Mais pour affirmer qu'un élément contient du texte (d'une autre classe), je dois définir les comme ceci:
@FindBy(xpath = "(//*[contains (text(),'Hrs')])[2]")
public static WebElement yourLoggedTime;
Le but de PageObjects est d'encapsuler des détails sur les éléments de page. Si vous les avez rendus publics alors quand (pas si) l'un d'entre eux a changé, vous devrez traquer tous les endroits que vous avez référencés et dupliquer le changement. En encapsulant des éléments Web dans un objet de page, vous le modifiez une fois. Vos tests doivent se soucier du comportement (par exemple searchFor) et non des détails sur les éléments manipulés. Les détails de l'élément se trouvent uniquement dans PageObjects. – MikeJRamsey56