web-dev-qa-db-fra.com

Comment vérifier un texte présent dans la page chargée via WebDriver

J'ai besoin de vérifier un texte présent dans la page via WebDriver. J'aime voir le résultat en booléen (vrai ou faux). Quelqu'un peut-il aider en donnant le code WebDriver?

9
kranthi kumar

Comme points de zmorris, driver.getPageSource().contains("input"); n’est pas la solution appropriée, car il effectue une recherche dans tout le code HTML, pas seulement dans les textes qui y figurent .. Je suggère de vérifier cette question: comment puis-je vérifier si du texte existe ou non dans la page? et la méthode recommandée par Slanec:

String bodyText = driver.findElement(By.tagName("body")).getText();
Assert.assertTrue("Text not found!", bodyText.contains(text));
6
Ricardo Vila

Oui, vous pouvez faire ce qui retourne booléen. Le code Java suivant dans WebDriver avec TestNG ou JUnit peut faire l'affaire:

protected boolean isTextPresent(String text){
    try{
        boolean b = driver.getPageSource().contains(text);
        return b;
    }
    catch(Exception e){
        return false;
    }
  }

Appelez maintenant la méthode ci-dessus comme ci-dessous:

assertTrue(isTextPresent("Your text"));

Ou, il y a un autre moyen. Je pense que c'est la meilleure façon:

private StringBuffer verificationErrors = new StringBuffer();
try {
                  assertTrue(driver.findElement(By.cssSelector("BODY")).getText().matches("^[\\s\\S]*    Your text here\r\n\r\n[\\s\\S]*$"));
  } catch (Error e) {
     verificationErrors.append(e.toString());
   }
3
user2027659

Driver.getPageSource () est un mauvais moyen de vérifier le texte présent. Supposons que vous disiez, driver.getPageSource().contains("input"); Cela ne vérifie pas que "input" est présent à l'écran, mais que "input" est présent dans le code HTML, comme une balise input.

Je vérifie généralement le texte d'un élément en utilisant xpath:

boolean textFound = false;  
try {
    driver.findElement(By.xpath("//*[contains(text(),'someText')]"));
    textFound = true;
} catch (Exception e) {
    textFound = false;
}

Si vous voulez une correspondance de texte exacte, supprimez simplement la fonction contient:

driver.findElement(By.xpath("//*[text()='someText']));
1
zmorris

Si l'emplacement du texte présent ne vous dérange pas, vous pouvez utiliser la propriété Driver.Page Source comme ci-dessous:

Driver.Page_Source.Contains ("message attendu");

1
Pani Kumar

Si vous voulez vérifier uniquement les objets affichés ( C # ):

    public bool TextPresent(string text, int expectedNumberOfOccurrences)
    {
        var elements = Driver.FindElements(By.XPath(".//*[text()[contains(.,'" + text + "')]]"));
        var dispayedElements = 0;
        foreach (var webElement in elements)
        {
            if (webElement.Displayed)
            {
                dispayedElements++;
            }
        }
        var allExpectedElementsDisplayed = dispayedElements == expectedNumberOfOccurrences;
        return allExpectedElementsDisplayed;
    }
0
user2492994

Pour les programmeurs Ruby, voici comment vous pouvez l'affirmer. Doit inclure Minitest pour obtenir les assertions

    assert(@driver.find_element(:tag_name => "body").text.include?("Name"))
0
Ritesh Karwa

Le code ci-dessous est le moyen le plus approprié pour vérifier un texte sur une page. Vous pouvez utiliser n'importe lequel des 8 localisateurs selon votre convenance. 

String Verifytext = driver.findElement (By.tagName ("body")). GetText (). Trim (); Assert.assertEquals (Verifytext, "Collez ici le texte à vérifier");

0
Ashwini Kapoor