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 に答える