web-dev-qa-db-fra.com

Comment puis-je vérifier si du texte existe ou non dans la page en utilisant Selenium?

J'utilise Selenium WebDriver, comment puis-je vérifier si du texte existe ou non dans la page? Peut-être que quelqu'un me recommande des ressources utiles où je peux lire à ce sujet. Merci

41
khris

Avec XPath , ce n'est pas si difficile. Il suffit de rechercher tous les éléments contenant le texte donné:

List<WebElement> list = driver.findElements(By.xpath("//*[contains(text(),'" + text + "')]"));
Assert.assertTrue("Text not found!", list.size() > 0);

La documentation officielle ne supporte pas beaucoup les tâches de ce type, mais c’est néanmoins l’outil de base.

Les JavaDocs sont supérieurs, mais il faut un certain temps pour passer à travers tout ce qui est utile et inutile.

Pour apprendre XPath, il suffit de suivre Internet . La spécification est également une lecture étonnamment bonne.


MODIFIER:

Ou, si vous ne voulez pas que votre Wait implicite oblige le code ci-dessus à attendre que le texte apparaisse, vous pouvez faire quelque chose de ce genre:

String bodyText = driver.findElement(By.tagName("body")).getText();
Assert.assertTrue("Text not found!", bodyText.contains(text));
44
Petr Janeček

Cela vous aidera à vérifier si le texte requis est présent sur la page Web ou non.

driver.getPageSource().contains("Text which you looking for");
19
Rohit Ware

Vous pouvez récupérer le corps du texte de la page entière comme ceci:

bodyText = self.driver.find_element_by_tag_name('body').text

puis utilisez un assert pour le vérifier comme ceci:

self.assertTrue("the text you want to check for" in bodyText)

Bien sûr, vous pouvez être spécifique et récupérer le texte d'un élément DOM spécifique, puis le vérifier au lieu de récupérer la page entière.

12
JCarter

Il n’existe pas de pilote Web de Web verifyTextPresent dans Selenium 2. Vous devez donc vérifier le texte dans le code source. Voir quelques exemples pratiques ci-dessous.

Python

Dans le pilote Python, vous pouvez écrire la fonction suivante:

def is_text_present(self, text):
    return str(text) in self.driver.page_source

puis utilisez-le comme:

try: self.is_text_present("Some text.")
except AssertionError as e: self.verificationErrors.append(str(e))

Pour utiliser une expression régulière, essayez:

def is_regex_text_present(self, text = "(?i)Example|Lorem|ipsum"):
    self.assertRegex(self.driver.page_source, text)
    return True

Voir: FooTest.py fichier pour un exemple complet.

Ou vérifiez ci-dessous quelques autres alternatives:

self.assertRegexpMatches(self.driver.find_element_by_xpath("html/body/div[1]/div[2]/div/div[1]/label").text, r"^[\s\S]*Weather[\s\S]*$")
assert "Weather" in self.driver.find_element_by_css_selector("div.classname1.classname2>div.clearfix>label").text

Source: Une autre façon de vérifier (affirmer) qu’il existe un texte à l’aide de Selenium Python

Java

En Java, la fonction suivante:

public void verifyTextPresent(String value)
{
  driver.PageSource.Contains(value);
}

et l'utilisation serait:

try
{
  Assert.IsTrue(verifyTextPresent("Selenium Wiki"));
  Console.WriteLine("Selenium Wiki test is present on the home page");
}
catch (Exception)
{
  Console.WriteLine("Selenium Wiki test is not present on the home page");
}

Source: Utilisation de verifyTextPresent dans Selenium 2 Webdriver


Behat

Pour Behat, vous pouvez utiliser Extension Mink . Il a les méthodes suivantes définies dans MinkContext.php :

/**
 * Checks, that page doesn't contain text matching specified pattern
 * Example: Then I should see text matching "Bruce Wayne, the vigilante"
 * Example: And I should not see "Bruce Wayne, the vigilante"
 *
 * @Then /^(?:|I )should not see text matching (?P<pattern>"(?:[^"]|\\")*")$/
 */
public function assertPageNotMatchesText($pattern)
{
    $this->assertSession()->pageTextNotMatches($this->fixStepArgument($pattern));
}

/**
 * Checks, that HTML response contains specified string
 * Example: Then the response should contain "Batman is the hero Gotham deserves."
 * Example: And the response should contain "Batman is the hero Gotham deserves."
 *
 * @Then /^the response should contain "(?P<text>(?:[^"]|\\")*)"$/
 */
public function assertResponseContains($text)
{
    $this->assertSession()->responseContains($this->fixStepArgument($text));
}
6
kenorb

En python, vous pouvez simplement vérifier comme suit:

# on your `setUp` definition.
from Selenium import webdriver
self.Selenium = webdriver.Firefox()

self.assertTrue('your text' in self.Selenium.page_source)
2
Adiyat Mubarak

En c #, ce code vous aidera à vérifier si le texte requis est présent sur la page Web ou non.

Assert.IsTrue(driver.PageSource.Contains("Type your text here"));
1
mpaul

Vous pouvez rechercher du texte dans votre source de page comme suit: 

Assert.IsTrue(driver.PageSource.Contains("Your Text Here"))
1
Basharat Ali

JUnit + Webdriver

assertEquals(driver.findElement(By.xpath("//this/is/the/xpath/location/where/the/text/sits".getText(),"insert the text you're expecting to see here");

Si dans le cas où votre texte attendu ne correspond pas au texte xpath, Webdriver vous indiquera quel était le texte réel par rapport à vos attentes.

0
Dan
  boolean Error = driver.getPageSource().contains("Your username or password was incorrect.");
    if (Error == true)
    {
     System.out.print("Login unsuccessful");
    }
    else
    {
     System.out.print("Login successful");
    }
0
fart