【发布时间】:2014-09-28 06:24:42
【问题描述】:
当我的按钮被点击时,ng-hide 指令会将隐藏的 div 转换为在页面上可见。我正在使用 Seleno 为 Angular 应用程序编写 UI 测试。
我已经检查了该元素上的display css 值:
var cssValue = SelectById(elementId).GetCssValue("display");
这个cssValue 总是返回一个none。
还检查了class 属性。
var cls = SelectById(elementId).GetAttribute("class");
我希望 ng-hide 应该从该元素的类中删除。
return !SelectById(elementId).GetAttribute("class").Contains("ng-hide");
但每次class 仍然包含ng-hide!
如果有人可能会问,这是我的SelectById。只是为了在 Selenium 页面对象上返回一个 Web 元素。
protected IWebElement SelectById(string id)
{
return Find.Element(By.Id(id));
}
如答案部分所述,我可能没有以正确的方式等待 Angular 的类更新。我所做的只是让Thread Sleep 一会儿。
public static void Pause(int durationInMilisecond = 2000)
{
if (SelenoSettings.EnablePausing)
Thread.Sleep(durationInMilisecond);
}
谁能给我一些建议?谢谢。
【问题讨论】:
-
听起来这个类需要一些时间才能被删除,所以等待它:
WebDriverWait wait = new WebDriverWait(); wait.Until(d => !SelectById(elementId).GetAttribute("class").Contains("ng-hide")) -
感谢您的意见。你在使用
seleno还是什么?WebDriverWait没有无参数构造函数。它要求WebDriverWait(IWebDriver driver, TimeSpan timeout)。 -
这是伪代码。但是,是的,它需要访问驱动程序以及等待多长时间。不知道 Seleno 是否有任何东西可以让您直接访问驱动程序,但您需要它。
-
谢谢。您当然为我们指明了正确的方向。我们现在有了解决方案。