java
  • selenium
  • assertions
  • pageobjects
  • 2016-03-29 2 views 0 likes 
    0

    Comment utiliser le chemin/emplacement d'une variable @FindBy comme argument d'une méthode?Assertions en sélénium avec Page Object Factory

    J'ai la valeur @FindBy suivante dans ma classe ...

    @FindBy(xpath=".//*[@id='HasAnotherSubsidisedQual_container']") 
    @CacheLookup WebElement mSubsidisedQual; 
    

    J'ai ensuite une méthode pour vérifier si un élément existe ...

    public boolean isElementPresent(By element){ 
        try { 
         mDriver.findElement(element); 
         return true; 
        } 
        catch (org.openqa.selenium.NoSuchElementException e){ 
         return false; 
        } 
    } 
    

    J'utilise ensuite cette méthode dans une autre méthode qui contient une assertion

    public void checkSmartAndSkilled() { 
        Assert.assertTrue(isElementPresent(By.xpath(".//*[@id='HasAnotherSubsidisedQual_container']"))); 
    } 
    

    Tout cela fonctionne bien, mais au lieu de spécifier By.xpa th ... etc dans l'assertion, est-il de toute façon passer en argument le chemin de mon @FindBy WebElement mSubsidisedQual?

    Un grand merci

    +0

    Copie possible de [Comment fournir une valeur à une annotation d'un java Constant] (http://stackoverflow.com/questions/2065937/how-to-supply-value-to-an-annotation-from-a- constant-java) – SiKing

    Répondre

    0

    Vous n'avez pas besoin de fournir à nouveau le XPath. Une fois initialisé par Page Factory, passez simplement l'élément en argument.

    public void checkSmartAndSkilled() { 
        Assert.assertTrue(isElementPresent(mSubsidisedQual)); 
    } 
    
    +0

    Cela ne fonctionne malheureusement pas. Vous ne pouvez pas passer un WebElement à un argument qui attend By. – Konzy262

    +0

    Assert.assertTrue (boolean) attend un argument booléen. Et, isElementPresent renvoie un booléen. Ça marche. – Haxor

    0

    Vous venez de créer une mauvaise méthode. Et la façon dont vous vérifiez l'existence des éléments est fausse. Mais si vous voulez le faire de cette façon, alors ce que vous devez faire est de le surcharger afin que le paramètre soit votre élément. Puis appelez l'élément (par exemple, cliquez sur, ou utilisez sa propriété comme Activer, ou Compte ou Longueur ou tout ce qui est disponible en Java) et si l'élément n'existe pas, il va attraper la même erreur. S'il existe, renvoyez true.

     Questions connexes

    • Aucun problème connexe^_^