Javaの場合、RemoteWebElementにisDisplayed()があります-isEnabled()も同様です
C#には、Displayed&Enabledプロパティがあります。
要素がページ上にあり、ユーザーに表示されるためには、両方が真である必要があります。
「htmlはまだ存在するので、見つけることができます」の場合は、isDisplayed(Java)/ Displayed(C#)と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;
}