Je veux vérifier si un élément existe dans Selenium, et si c'est le cas, attribuez-le à un nom.
En ce moment, j'ai quelque chose qui ressemble à ceci:
IWebElement size9 = driver.FindElement(By.CssSelector("a[data-value*='09.0']"));
Toutefois, lorsque cet élément ayant la valeur 9 n'existe pas, il renvoie une erreur. Existe-t-il un moyen de vérifier si cela existe ou quelque chose du genre?
Il y a plusieurs options. Je recommande ces .
1. Créez une méthode ou une extension de pilote Web.
public static IWebElement FindElementIfExists(this IWebDriver driver, By by)
{
var elements = driver.FindElements(by);
return (elements.Count >=1) ? elements.First() : null;
}
// Usage
var element = driver.FindElementIfExists(By.CssSelector("a[data-value*='09.0']"));
2. Comptez l'élément, obtenez-le s'il y a 1 ou plusieurs éléments.
By by = By.CssSelector("a[data-value*='09.0']");
var element = driver.FindElements(by).Count >= 1 ? driver.FindElement(by) : null;
Ensuite, vous pouvez vérifier if(element != null) { ... }
Vous devriez pouvoir faire quelque chose comme:
public static bool IsElementPresent_byCssSelector(string elementName)
{
try { Driver.FindElement(By.CssSelector(elementName)); }
catch (NoSuchElementException) { return false; }
catch (StaleElementReferenceException) { return false; }
return true;
}
var test = driver.IsElementPresent_byCssSelector("a[data-value*='09.0']");
if(test)
{
//do something
}