Si le texte existe, cliquez sur xyz
sinon cliquez sur abc
.
J'utilise l'instruction if
ci-dessous:
if(driver.findElement(By.xpath("/html/body/div[2]/div/div/div/div/div/div/table/tbody/tr[6]/td[2]")).isDisplayed())
{
driver.findElement(By.linkText("logout")).getAttribute("href");
} else {
driver.findElement(By.xpath("/html/body/div/div/div/a[2]")).click();
}
Le script échoue avec le message d'erreur suivant:
Unable to locate element: {"method":"xpath","selector":"/html/body/div[2]/div/div/div/div/div/div/table/tbody/tr[6]/td[2]"}
Essayez ce code:
Le code ci-dessous permet de vérifier la présence de texte dans toute la page Web.
if(driver.getPageSource().contains("your Text"))
{
//Click xyz
}
else
{
//Click abc
}
Si vous voulez vérifier le texte sur un élément Web particulier
if(driver.findElement(By.id("Locator ID")).getText().equalsIgnoreCase("Yor Text"))
{
//Click xyz
}
else
{
//Click abc
}
Vous devez envelopper le "IsDisplayed" dans une capture d'essai. "IsDisplayed" ne peut être appelé que si l'élément existe.
Vous voudrez peut-être également remplacer le délai d'expiration implicite, sinon l'essai/capture prendra beaucoup de temps.
Ici, nous pouvons utiliser try, sauf la fonction utilisant le pilote Web Python. voir ci-dessous le code
webtable=driver.find_element_by_xpath("xpath value")
print webtable.text
try:
xyz=driver.find_element_by_xpath(("xpath value")
xyz.click()
except:
abc=driver.find_element_by_xpath(("xpath value")
abc.click()
Essayez ce code ci-dessous: -
Assert.assertTrue(driver.getPageSource().contains(textOnThePage));
Tout d’abord, les XPath de ce type et byLinkText
sont de très mauvais localisateurs et échoueront fréquemment. Les localisateurs doivent être descriptifs, uniques et peu susceptibles de changer. La priorité est d'utiliser:
Ensuite, vous pouvez utiliser getText()
sur l'élément plutôt que sur la page entière (getPageSource()
), qui est plus spécifique. try catch
est également une bonne pratique pour isDisplayed()
, comme @Robbie l'a indiqué, ou encore mieux, utilisez FluentWait pour trouver l'élément:
// Waiting 10 seconds for an element to be present on the page, checking
// for its presence once every 1 second.
Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
.withTimeout(10, SECONDS)
.pollingEvery(1, SECONDS)
.ignoring(StaleElementReferenceException.class)
.ignoring(NoSuchElementException.class)
.ignoring(ElementNotVisibleException.class)
Puis utilisez comme ceci:
wait.until(x -> {
WebElement webElement = driverServices.getDriver().findElement(By.id("someId"));
return webElement.getText();
});
wait.until(x -> {
WebElement webElement = driverServices.getDriver().findElement(By.id("someOtherId"));
return webElement.getAttribute("href");
});