0

登録フォームを自動化し、新しいアカウントを作成し、同じアカウントの詳細を使用して、新しく作成したアカウント番号とパスワードでログインする必要があります.1 つのシナリオでこれを行う必要があります。

機能: 新しいユーザーを作成し、ユーザー名とパスワードを取得して、それらの詳細を使用してログインを試みます。

 Scenario: test
    Given I am on xyz.com
    When I click on register
    Then I will enter required details for registration
    Then I will click on submit
    And I will enter new account details to login to test.
4

3 に答える 3

0

1 つのフローでない限り、1 つのシナリオでそれを行うことはありません。そして、私は xyz.com にアクセスしたり、何かをクリックしたりしませんでした。それは「行動」ではないからです。ページ オブジェクトが役立ちます。

Scenario: Register a new account
Given I do not have an account
When I register a new account
Then I can use those credentials to access the site

次に、適切な手順を作成します

Given(/^I do not have an account%/) do
  @credentials = get_unique_credentials
  @browser = Watir::Browser.new :firefox
end

When(/^I register a new account$/) do
  visit RegistrationPage do |page|
    page.name = @credentials[0]
    page.password = @credentials[1]
    page.register
  end
end

Then(/^I can use those credentials to access the site$/) do
  visit LoginPage do |page|
    page.name = @credentials[0]
    page.password = @credentials[1]
    page.login
  end
  on HomePage do |page|
    expect(page.something).to exist
  end
end
于 2016-06-04T00:01:23.530 に答える
0

それがあなたを助けることができることを願っています

Feature: a sample of test

  Scenario: test
    Given I am on "xyz.com"
    When I click on register
    Then I will enter required details for registration
    Then I will click on submit
    And I will enter new account details to login to test
############手順
Given(/^I am on "([^"]*)"$/) do |website|
  visit website
end

When(/^I click on register$/) do
  find(:xpath, "registerbutton").click
end

Then(/^I will enter required details for registration$/) do
  @username = "xpto"
  @password = "xptopassword"

  fill_in('camp_name', with: @username)
  fill_in('camp_name', with: @password)
  fill_in('othercamps', with: "etcs")
  #repeat for all the camps
end

Then(/^I will click on submit$/) do
  find(:xpath, "submit_button").click
end

Then(/^I will enter new account details to login to test$/) do
  visit "www.myloginpage.com"
  fill_in("camp_username", with: @username)
  fill_in("camp_password", with: @password)
  find(:xpath, "login_button").click
  page.should have_content ("LoggedPAge")
end

Selenium IDE (firefox の拡張機能) を使用して、すべての xpath を見つけることができます。

私はその解決策が好きではありません.

于 2016-06-03T20:39:27.460 に答える
0

簡単な答えは、1 つのシナリオでこれを行う必要はないということです。

ここでは次の 2 つのことを行っています。

  1. 登録中
  2. サインイン

最初に2番目に対処しましょう。

サインインするには、登録する必要があるため、次のようなシナリオが得られます

Scenario: Sign in
  Given I am registered
  When I sign in
  Then I should be signed in

しかし、どうやって登録するのでしょうか?

Scenario: Register
  Given I am a new user
  When I register
  Then I should be registered

さて、これをどのように実装しますか

Given "I am a new user" do
  @i = create_new_user
end

When "I register" do 
  register as: @i
end

Then "I should be registered" do
  # Go look at something to see that we are registered
end

これが機能したら、実装できるようになりました

Given "I am registered" do
  @i = create_new_user
  register as: @i
end

これを行うことができるのは、「登録」シナリオを機能させることで登録する機能を作成したためです。

これで、サインインに取り掛かることができます

これが、Cucumber を使用した BDD のしくみです。少しの動作の実装に取り​​組みます (通常は When で、登録など)。次に、その動作を (Givens で) 使用して、新しい動作の実装 (サインイン) に取り組むことができる場所に到達できるようにします。

それが役立つことを願っています

もう少し詳しく:

メソッド create_new_user、register はヘルパー メソッドと呼ばれます。これらは、より単純なステップ定義を記述するための鍵です。Rubyでは、次のように定義できます

module SignupStepHelper
  def register
    ...
  def create_new_user
    ...
end

World SignupStepHelper # makes it possible to call the methods in you step defs.
于 2016-06-08T13:09:25.760 に答える