如何在一次测试中声明对Web元素的多个更改

时间:2015-07-21 18:14:57

标签: c# selenium selenium-webdriver coded-ui-tests

如何断言事件发生后页面上发生了多处更改?

行为举例我想断言:

  1. 点击某个按钮
  2. 主菜单崩溃
  3. 出现其他一些元素。
  4. 我想断言所有这些事情都是在我点击按钮后发生的。我是否真的必须在每个变更的每个断言上编写相同的方法?

1 个答案:

答案 0 :(得分:0)

为什么需要为每个断言编写更多方法?您可以使用一种方法来检查元素是否可见,并为每个元素调用一次。

private boolean IsElementVisible(By by)
{
    try
    {
        return driver.FindElement(by).IsDisplayed();
    }
    catch(NoSuchElementException e)
    {
        return false;
    }
}

private List<By> VerifyElementVisibility(
          List<By> expectedVisibile, List<By> expectedInvisible)
{
    List<By> failedExpectations = new List<By>();

    for (By by in expectedVisible)
    {
        if(!IsElementVisible(by)
        {
            failedExpectations.Add(by);
        }
    }

    for (By by in expectedInvisible)
    {
        if(IsElementVisible(by)
        {
            failedExpectations.Add(by);
        }
    }
    return failedExpectations;
}
List<By> failedExpectations = VerifyElementVisiblity(visibleElements, invisibleElements);
Assert.IsTrue(failedExpectations.Count == 0,
     failedExpectations.Count.ToString() + " elements did not meet expectations");