首页 > 解决方案 > Element.Disabled 引发错误,因为找不到元素

问题描述

对于我的测试,我需要这个元素。禁用返回 false。

当测试到达未显示该元素的页面时,测试因未找到元素而失败。

以下代码失败,因为用户名文本框未显示在页面上

if (VerifyUsernameTextBox())
{
do something
}

public bool VerifyUsernameTextBox()
        {
            return username.Displayed;  // code fails with no element found while return false is expected .

}

该怎么做,我得到 element.Displayed 为 false 。

标签: c#selenium-webdriver

解决方案


您通过 找到元素driver.findElement(),对吗?请记住,findElement如果找不到元素,则会引发异常,因此您需要正确处理它。

你可以这样做:

    private bool IsUsernamePresent(By by)
    {
        try
        {
            driver.findElement(by);
            return true;
        }
        catch (NoSuchElementException)
        {
            return false;
        }
    }

然后

public bool VerifyUsernameTextBox()
{
    return IsUsernamePresent(By.Id("element_username_id"));
}           

推荐阅读