首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Selenium (或Seleno)来检测DOM元素是否按角显示

如何使用Selenium (或Seleno)来检测DOM元素是否按角显示
EN

Stack Overflow用户
提问于 2014-08-05 14:31:10
回答 2查看 4.4K关注 0票数 1

当单击我的按钮时,ng-hide指令将使隐藏的div在页面上可见。我正在使用Seleno为一个角度应用程序编写UI测试。

我检查了该元素上的display css值:

代码语言:javascript
复制
var cssValue = SelectById(elementId).GetCssValue("display");

这个cssValue总是返回一个none

还选中了class属性。

代码语言:javascript
复制
var cls = SelectById(elementId).GetAttribute("class");

我期望从这个元素的类中删除ng-hide

代码语言:javascript
复制
return !SelectById(elementId).GetAttribute("class").Contains("ng-hide");

但是每次class仍然包含ng-hide时!

万一有人问起,这是我的SelectById。只是为了在Selenium Page对象上返回一个Web元素。

代码语言:javascript
复制
    protected IWebElement SelectById(string id)
    {
        return Find.Element(By.Id(id));
    }

正如在“回答”部分中提到的,我可能没有以正确的方式等待类按角度更新。我所做的就是让Thread Sleep呆一会儿。

代码语言:javascript
复制
    public static void Pause(int durationInMilisecond = 2000)
    {
        if (SelenoSettings.EnablePausing) 
            Thread.Sleep(durationInMilisecond);
    }

有人能给我点建议吗?谢谢。

EN

回答 2

Stack Overflow用户

发布于 2014-08-05 15:46:26

这是我们的解决方案,感谢ABucin和Arran的输入。谢谢你为我们指明了正确的方向。在这种情况下,WebDriverWait是我们应该研究的问题。

代码语言:javascript
复制
public bool Displayed(string elementId)
{
    try
    {
    var wait=new WebDriverWait(BrowserFactory.Chrome(),new TimeSpan(0,2,0));
    wait.Until(d => !SelectById(elementId).GetAttribute("class").Contains("ng-hide"));

    // then there is all types of checking start to work:
    var bySelenoDisplayed =SelectById(elementId).Displayed;
    return bySelenoDisplayed;

    var byCss = SelectById(elementId).GetCssValue("display");
    return !byCss.Equals("hidden");

    var byClass = SelectById(elementId).GetAttribute("class");
    return !byClass.Contains("ng-hide");
    }

    catch (Exception)
    {
        // 2min timeout reached.
        return false;
    }
}
票数 1
EN

Stack Overflow用户

发布于 2014-08-05 14:49:40

根据角ngHide文档(https://docs.angularjs.org/api/ng/directive/ngHide),“通过在元素中删除或添加ng-hide CSS类来显示或隐藏元素”。所以你最好的方法是:

  • 点击按钮
  • 等着全班同学被关掉
  • 检查未出现的类

我相信你的问题是,课程取消不是立即发生的,而是在一段时间之后。对于Java上的Selenium,我已经有过几个问题,我认为这也是您的例子中的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25141387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档