单击失败,因为该元素不可见

时间:2014-10-29 00:54:35

标签: c# selenium-webdriver phantomjs

我使用以下内容点击网页上的元素:

driver.FindElement(By.Name("SearchIcon")).Click();

HTML:

<span class="ticon ti-search ti-1x" name="SearchIcon"> </span>

我认为这是非常轻松和紧张的前进,但我得到了:

  

&#34; {&#34; errorMessage&#34;:&#34;元素目前无法显示,可能无法操作&#34;,&#34;请求&#34;:{&#34;标题& #34;:{&#34;接受&#34;:&#34; application / json,image / png&#34;,&#34;连接&#34;:&#34;关闭&#34;,&#34 ; Content-Length的&#34;:&#34; 0&#34;&#34;内容类型&#34;:&#34;应用/ JSON;字符集= UTF-8&#34;&#34;主机& #34;:&#34;本地主机:54912&#34;}&#34; httpVersion&#34;:&#34; 1.1&#34;&#34;方法&#34;:&#34; POST&# 34;,&#34;后&#34;:&#34;&#34;&#34; URL&#34;:&#34; /点击&#34;&#34; urlParsed&#34;:< / p>

提出

 NUnit.Framework.Assert.IsTrue(driver.FindElement(By.Name("SearchIcon")).Enabled);
在点击语句通过之前

显然元素在那里并且一旦测试运行就可见,所以我不会在这里弄错。

1 个答案:

答案 0 :(得分:1)

我知道这有点旧,但我偶然发现了它。它可以帮助别人。

您可以创建一个检查元素是否存在的扩展方法:

    public static bool Exists(this IWebElement element)
    {
        try
        {
            var text = element.Text;
        }
        catch (NoSuchElementException)
        {
            return false;
        }
        return true;
    }

然后你可以断言:

var searchIcon = driver.FindElement(By.Name("SearchIcon"));

NUnit.Framework.Assert.IsTrue(searchIcon.Exists());