web-dev-qa-db-fra.com

Vérifier si je suis dans le sélénium

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?

7
Max

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) { ... }

11
Buaban

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
}
0
Dazed