-1
votes

Quelle est la meilleure façon d'utiliser le modèle d'objet de page avec Page Fatcory

J'ai actuellement une tâche assignée pour créer un framework d'automatisation en Java et j'ai eu une dispute avec l'architecte sur la conception du test. Voici à quoi ressemble mon framework actuel, Thie Maven, POM et PageFactory.

Projet
- Utlities Package - contient toutes les classes d'utilitaires
- Locators - contient uniquement les WebElements du site Web (Page Factory)
- Actions - contient le clic, les touches d'envoi et d'autres actions pour les localisateurs
- Étape - Appel et affirmation de la méthode de classe Action (définition de l'étape concombre)
- Custome Listeners - Classe d'auditeur

L'architecte m'a conseillé de supprimer la classe d'actions et d'ajouter toutes les actions dans la classe de localisateur elle-même, ce qui évitera la création de classe supplémentaire pour chaque classe de localisateur. Mais ce que j'avais à l'esprit, c'est qu'au fur et à mesure que le projet s'agrandit, cela aura l'air plus désordonné. J'ai donc essayé de séparer les localisateurs en tant que classe différente et les actions dessus dans une classe différente. Je voulais donc demander quelle est la meilleure approche, ajouter des actions dans la classe de localisateur ou séparer?


0 commentaires

3 Réponses :


0
votes

Oui, votre approche est meilleure. Toutes les actions courantes doivent appartenir à une classe et chaque classe d'objets de page doit l'étendre. Ce faisant, cela rendra vos tests plus robustes et empêchera les classes Page d'être polluées par les détails d'implémentation du pilote.


0 commentaires

0
votes

Bien que ce soit une question d'opinion, je recommanderais d'utiliser l'approche de votre architecte logiciel et de supprimer les classes Action. Je ne sais pas quelle est l'intention des classes Step, je les supprimerais donc également.

  • Projet
    • Utilitaires
    • PageObjects
    • CustomListeners
    • WebDriver

Vous pouvez créer un BasePageObject qui contient tous les localisateurs et méthodes courants, par exemple la gestion d'une barre de navigation ou d'un menu. Cette classe doit ensuite être étendue par tous les autres objets de page.

En plus de cela, je recommanderais de jeter un oeil à cette réponse. Il montre comment vous pouvez encapsuler le RemoteWebDriver pour le rendre plus robuste, ce qui sera utile lors de la mise en œuvre des tests d'interface utilisateur.


0 commentaires

0
votes

Modèle d'objet de page, dans lequel vous pouvez affecter tous vos localisateurs Web à un seul fichier. Il devrait y avoir une classe différente selon différents scénarios, différentes pages Web ou utilitaires personnalisés comme vous l'avez défini (le cas échéant).

Vous pouvez utiliser le modèle d'objet de page par deux approches: -

-Définition simple: (Il existe de nombreuses dispositions où vous pouvez implémenter de telles choses sans avoir de référence à WebElement, et en utilisant directement Par référence. Donc, attribuer une valeur à un élément Web n'est pas du tout nécessaire.)

@FindBy(className="xyz")  WebElement demo_get_text;

-Avec Page Factory: (Il s'exécute plus rapidement d'en haut)

By demo_get_text=By.className("xyz");


0 commentaires