【发布时间】:2019-04-05 10:50:53
【问题描述】:
我正在检查一个元素是否被显示。我的断言返回 false,我发现这是因为该元素被禁用。
我想检查元素是否显示,无论它是启用还是禁用。
我的代码 sn-p 是(从我们的框架中检查元素是否显示的方法):
public bool IsElementPresent(IWebDriver browser, IWebElement element)
{
return utility.Element.IsDisplayed(element).Invoke(browser);
}
public Func<IWebDriver, bool> IsDisplayed(IWebElement element)
{
return driver =>
{
try
{
return element.Displayed;
}
catch (Exception e)
{
MessageHandler.OutputError(e);
return false;
}
};
}
调用IsElementPresent的方法的代码sn-p:
public void CheckSportsLoginDialogIsDisplayed()
{
Actions.Verify.IsElementPresent(Browser, SportsLogin).Should().BeTrue();
}
定位器:
[FindsBy(How = How.CssSelector, Using = "input.loginButton.submitButton.loginSubmit")]
private IWebElement SportsLogin { get; set; }
HTML 元素:
<input class="loginButton submitButton loginSubmit disabled" value="Log in" type="submit" disabled="">
如何检查此元素是否存在?它是禁用还是启用都没有关系。 谢谢, 里亚兹
【问题讨论】:
-
我刚刚对
<input type="text" id="name" readonly>进行了快速测试,以便它是只读的,然后使用Driver.FindElement(By.Id("name")).Displayed并返回true。我认为这里正在发生其他事情。我知道当 Selenium 检查某些东西是否可点击时,它会检查显示和启用,这意味着 disabled 的东西仍应返回true以显示。您确定您的定位器指向正确的INPUT?您确定该元素在测试时实际上是可见的吗?您是否尝试过先添加等待?
标签: c# selenium selenium-webdriver specflow