0

私は WebDriver を使用して Jbehave Web を使い始めたばかりで、同じテキストのステップを異なるステップ メソッドに適用できるかどうか疑問に思いました。

たとえば、次の 2 つのシナリオがあるとします。

シナリオ 1

  • 私が物件を購入するページにいるとします
  • 検索をクリックすると
  • 次に、購入するすべてのプロパティを含む結果ページが表示されるはずです

シナリオ 2

  • 私が賃貸物件のページにいるとすれば
  • 検索をクリックすると
  • 次に、賃貸するすべての物件を含む結果ページが表示されるはずです

ページ オブジェクト パターンを使用してこれを実装すると、たとえば buyProperties というページ オブジェクトが作成され、同様にレンタル プロパティの場合は、rentProperties の行に沿ってページ オブジェクトが呼び出されます (結果ページ オブジェクトも同様です)。

どちらのシナリオでも、検索ボタン/リンクがクリックされるため、手順のテキストは同じです。ただし、実際には、それらは異なるページ (およびページ オブジェクト) にあります。

レンタル シナリオでは、rentProperties ページの検索ボタンのクリックを実装するステップ メソッドを呼び出すことを認識し、購入シナリオでは、buyProperties ページの検索ボタンのクリックを実装するステップ メソッドを呼び出すことを認識できるように、Jbehave を実装するにはどうすればよいでしょうか?

4

2 に答える 2

0

試す

@Given ("I am on the properties to $action page")
public void given_i_am_on_the_properties_action_page(@Named("action") String action) {
    if (action.equalsIgnoreCase("Buy") {
        do something;
    }
    if (action.equalsIgnoreCase("Rent") {
        do something;
    }
}

「何かをする」とは、次のステップのためにページオブジェクトを設定することです。同様に、@Thenステップにも同じメソッドと変数を使用できます。

メニュー項目を選択し、ページが読み込まれるのを待ってから次のステップに進むのと同じようなものを使用しました

@When ("I select menu item $menuItem")
public static void when_i_select_menu_item(@Named("menuItem") String menuItem) {
    String item = "";
    String waitFor = "";
    if (menuItem.equalsIgnoreCase("admin")) {
        item = "Admin";
        waitFor = "admin_page";
    }
    if (menuItem.equalsIgnoreCase("home")) {
        item = "Home";
        waitFor = "home_page";
    }
    if (menuItem.equalsIgnoreCase("search")) {
        item = "Search";
        waitFor = "search_page";
    }

    driver.findElement(By.id(item)).click();
    (new WebDriverWait(driver, timeout)).until(new ExpectedCondition<Boolean>() {
        public Boolean apply(WebDriver d) {
            return element.findElement(By.id(waitFor)).isDisplayed() || d.findElement(By.id(waitFor)).isEnabled();
        }
    });
}
于 2013-02-13T13:18:57.107 に答える
0

ステップ クラスには 2 つのメソッドがあります。各メソッドは独自のことを行います。"rent" と "buy" が渡された変数である場合、その変数の値に基づいて異なる処理を行います。質問がよくわかりません...すみません。

于 2012-05-09T21:20:35.583 に答える