0
votes

Comment vérifier l'élément Web spécifique sur une page différente dans le module de connexion

Dans ma demande Lorsque vous êtes d'utilisateur, la première fois que lors de la première page, le nom d'utilisateur est affiché (approche axée sur les données à l'aide de @Factory). Mais si l'utilisateur se déconnecte et connectez-vous à nouveau, une nouvelle page est livrée avec le texte suivant.

if (clickHere.isDisplayed())
      {   
          clickHere.click();
          username.sendKeys(strUsername);
          nextBtn.click();
          password.sendKeys(strPassword);
          loginButton.click();
          System.out.println("Successfully Logged");
      }
      else
          {

          username.sendKeys(strUsername);
          nextBtn.click();
          password.sendKeys(strPassword);
          loginButton.click();
          System.out.println("Successfully Logged");
          }


0 commentaires

3 Réponses :


0
votes

Remplacez le (clickhere.isdisplayed ()) avec ci-dessous. xxx

Si vous souhaitez coller à votre pageFactory, vous pouvez utiliser l'approche ci-dessous xxx

si vous souhaitez attraper uniquement NosuchelementPresent Exception Vous pouvez mettre à jour pour attraper uniquement cela.


0 commentaires

1
votes

clickhere.isdisplayed () code> donne noschelementException code> car l'élément n'est pas présent sur l'interface utilisateur sur laquelle vous essayez de le trouver.
Donc, pour résoudre votre problème, vous pouvez récupérer la liste de l'élément via la pageFactory, puis trouver la taille de cette liste, si la taille est supérieure à 0, cela signifie que l'élément est présent sur la page, l'élément n'est pas présent.

Vous devez apporter les modifications suivantes dans votre code et cela fonctionnerait bien alors:
Vous devez extraire la liste des éléments à l'aide de: p> xxx pré>

et apportez les modifications suivantes dans votre code: p>

if (clickHere.size()>0){   
      clickHere.get(0).click();
      username.sendKeys(strUsername);
      nextBtn.click();
      password.sendKeys(strPassword);
      loginButton.click();
      System.out.println("Successfully Logged");
 }
 else{
      username.sendKeys(strUsername);
      nextBtn.click();
      password.sendKeys(strPassword);
      loginButton.click();
      System.out.println("Successfully Logged");
 }


4 commentaires

Merci pour la réponse. J'ai fait la même chose que vous avez mentionné mais après avoir tapé ClickHere. - Il ne remplit pas l'action "Cliquez sur".


@Samy ouais j'ai fait une petite erreur dans mon code. S'il vous plaît essayez le code mis à jour. Cela devrait fonctionner bien.


oui ça marche bien maintenant..mais seul problème est que cela prend beaucoup de temps pour commencer à se connecter en premier..may être à cause de l'attente implicite que j'ai appliquée avant de commencer mon projet ... Pouvons-nous faire quelque chose pour commencer comme dans le temps normal intervalle.


@Samy la condition de vérifier si la taille de la liste est excellente que 0 prend du temps lorsque l'élément n'est pas présent sur la page, car il trouve d'abord l'élément sur la page entière, puis attendez l'attente implicite, puis il envoie. que la taille de la liste est égale à 0. Cependant, cela fonctionnerait rapidement lorsque l'élément est présent sur la page. Donc, rien que nous puissions faire à ce sujet, vous pouvez réduire votre attente implicite si vos autres éléments ne sont pas affectés.



0
votes

Vous pouvez créer une base de base pour votre pageObject et une impuche METCHOD ISELEMENTEnpage strong>

Classe de base: P>

public class PageClass extends BasePage {

    @FindBy(xpath="//a[@href='/Account/Login']")
    private WebElement clickHere;

    public PageClass(WebDriver driver) {
        super(driver);
    }

    public PageClass YourMethod(){
        if(isElementOnPage(clickHere)){
            clickHere.click();
            // your logic here
        }else {
            // your logic here
        }

        return this;
    }
}


0 commentaires