【问题标题】:Click fails because the element is not visible单击失败,因为该元素不可见
【发布时间】:2015-01-10 00:19:17
【问题描述】:

我正在使用以下内容单击网页上的元素:

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

HTML:

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

这应该是非常容易和严格的,但我得到了:

"{"errorMessage":"元素当前不可见,可能无法操作","re​​quest":{"headers":{"Accept":"application/json, image/png","Connection": "关闭","Content-Length":"0","Content-Type":"application/json;charset=utf-8","Host":"localhost:54912"},"httpVersion":"1.1" ,"method":"POST","post":"","url":"/click","urlParsed":

放一个

 NUnit.Framework.Assert.IsTrue(driver.FindElement(By.Name("SearchIcon")).Enabled);

在 click 语句通过之前,显然该元素在那里并且一旦测试运行就可见,所以我不明白这里有什么问题。

【问题讨论】:

  • 您可能应该检查该元素是.Displayed 而不是.Enabled。您可能需要等待。
  • ext 方法也没有成功.. NUnit.Framework.Assert.IsTrue(driver.FindElement(By.Name("SearchIcon"), 10).Di​​splayed);公共静态类 WebDriverExtensions { 公共静态 IWebElement FindElement(此 IWebDriver 驱动程序,通过,int timeoutInSeconds){ if (timeoutInSeconds > 0) { var wait = new WebDriverWait(驱动程序,TimeSpan.FromSeconds(timeoutInSeconds));返回 wait.Until(drv => drv.FindElement(by)); } 返回 driver.FindElement(by); } }
  • 在这里检查“设置窗口大小”解决方法github.com/angular/protractor/issues/585它对我有用

标签: c# selenium-webdriver phantomjs


【解决方案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());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多