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