0

我使用 SpecFlow + WatiN + nunit.framework 为 .net 构建 BDD 测试

我想检查 HTML 页面上的以下功能:

Scenario: Change user role from 'Admin' to 'User'

Given I have logged in
And I am on the 'Add new user' page
Then the 'Homepage' should not be visible
When I select 'Role' as 'User'
Then the 'Homepage' should be visible

这是一些属性取决于用户角色的场景。管理员没有主页,但用户有。所以页面有一个适当的 javascript 来显示/隐藏它。

更新:我做了以下方法:

[Then(@"'(.*)' (should|should not) be visible")]
public void ThenElementShouldBeVisible(string elementName, string should)
{
    var element = WebBrowser.Current.Elements.First(Find.ByLabelText(elementName));
    Assert.That(should == "should"
                    ? element.Style.Display == "none"
                    : element.Style.Display != "none");
}

但在我看来,浏览器对象在 Javascript 完成工作后并没有更新元素样式。

我不确定如何使用 SpecFlow 检查元素是否可见。

4

1 回答 1

1

您可以注入一些代码来等待任何 ajax 或异步操作完成,如讨论中所述。然而,即使有这样的解决方案,我们仍然需要在这里和那里使用一些 Thread.Sleep() 。

作为旁注,您的示例似乎与测试脚本非常接近。这是您应该尽量避免的反模式。您可以在此处找到一些指南。

于 2012-07-14T13:34:47.237 回答