我使用 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 检查元素是否可见。