对于 Java,RemoteWebElement 上有 isDisplayed() - 还有 isEnabled()
在 C# 中,有一个 Displayed & Enabled 属性。
两者都必须为真,元素才能出现在页面上并且对用户可见。
在“html仍然存在,所以可以找到”的情况下,只需检查 BOTH isDisplayed (Java) / Displayed (C#) AND isEnabled (Java) / Enabled (C#)。
例如,在 C# 中:
public void Test()
{
IWebDriver driver = new FirefoxDriver();
IWebElement element = null;
if (TryFindElement(By.CssSelector("div.logintextbox"), out element)
{
bool visible = IsElementVisible(element);
if (visible)
{
// do something
}
}
}
public bool TryFindElement(By by, out IWebElement element)
{
try
{
element = driver.FindElement(by);
}
catch (NoSuchElementException ex)
{
return false;
}
return true;
}
public bool IsElementVisible(IWebElement element)
{
return element.Displayed && element.Enabled;
}