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
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));
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");
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.
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.
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
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
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));
}
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)
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"));
Vous pouvez rechercher du texte dans votre source de page comme suit:
Assert.IsTrue(driver.PageSource.Contains("Your Text Here"))
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.
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");
}