7
我想检查Selenium中是否存在元素,如果存在,请将其分配给名称。检查Selenium中是否存在元素
现在我有一些看起来像这样:
IWebElement size9 = driver.FindElement(By.CssSelector("a[data-value*='09.0']"));
然而,当有9值元素不存在,则返回错误。有没有一种方法可以检查它是否存在,或者类似的东西?
我想检查Selenium中是否存在元素,如果存在,请将其分配给名称。检查Selenium中是否存在元素
现在我有一些看起来像这样:
IWebElement size9 = driver.FindElement(By.CssSelector("a[data-value*='09.0']"));
然而,当有9值元素不存在,则返回错误。有没有一种方法可以检查它是否存在,或者类似的东西?
有几种选择。我推荐这些。
1.创建一个方法或网络驱动程序扩展。
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.计数的元件,得到它,如果有1个或多个元件。
By by = By.CssSelector("a[data-value*='09.0']");
var element = driver.FindElements(by).Count >= 1 ? driver.FindElement(by) : null;
然后你就可以检查if(element != null) { ... }
你应该能够做这样的事情:
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
}
我不认为这适用于C#。你可以检查一下吗? – Buaban
嗯,该方法没有得到附加。更新了上述内容。 – Dazed