0

我正在使用 watir-webdriver。这是我的步骤定义,有人可以纠正我在这里做错了什么。我正在尝试使用一组详细信息进行注册。如果已经使用了第一组详细信息,我希望它使用第二组详细信息,依此类推。不幸的是,当测试运行时,它似乎只使用了第一组和第二组细节。它不会进入第三组。请帮助或建议。

Given /^I have signed up as a lender'$/ do
  @browser.link(:text, 'Join').click
  @browser.radio(:id, 'user_group_name_lenders').set
  @browser.text_field(:id, 'user_username').set('qw@qw.com')
  @browser.text_field(:id, 'user_username_confirmation').set('qw@qw.com')
  @browser.text_field(:id, 'user_login_password').set('qwe123')
  @browser.text_field(:id, 'user_login_password_confirmation').set('qwe123')
  @browser.button(:value, 'Sign up').click
  if @browser.h1(:text, 'Investor signup').exists?
    @browser.text_field(:id, 'lender_lender_profile_attributes_first_name').should exist
  elsif @browser.label(:text, 'has already been taken').exists?
    @browser.radio(:id, 'user_group_name_lenders').set
    @browser.text_field(:id, 'user_username').set('we@we.com')
    @browser.text_field(:id, 'user_username_confirmation').set('we@we.com')
    @browser.text_field(:id, 'user_login_password').set('qwe123')
    @browser.text_field(:id, 'user_login_password_confirmation').set('qwe123')
    @browser.button(:value, 'Sign up').click
    @browser.h1(:text, 'Investor signup').exists?
  elsif @browser.label(:text, 'Email *').exists?
    @browser.radio(:id, 'user_group_name_lenders').set
    @browser.text_field(:id, 'user_username').set('er@er.com')
    @browser.text_field(:id, 'user_username_confirmation').set('er@er.com')
    @browser.text_field(:id, 'user_login_password').set('qwe123')
    @browser.text_field(:id, 'user_login_password_confirmation').set('qwe123')
    @browser.button(:value, 'Sign up').click
    @browser.h1(:text, 'Investor signup').exists?
  elsif @browser.label(:text, 'Password *').exists?
    @browser.radio(:id, 'user_group_name_lenders').set
    @browser.text_field(:id, 'user_username').set('rt@rt.com')
    @browser.text_field(:id, 'user_username_confirmation').set('rt@rt.com')
    @browser.text_field(:id, 'user_login_password').set('qwe123')
    @browser.text_field(:id, 'user_login_password_confirmation').set('qwe123')
    @browser.button(:value, 'Sign up').click
    @browser.h1(:text, 'Investor signup').should exist
  else @browser.link(:text, 'Terms & Conditions').exists?
    @browser.radio(:id, 'user_group_name_lenders').set
    @browser.text_field(:id, 'user_username').set('ty@ty.com')
    @browser.text_field(:id, 'user_username_confirmation').set('ty@ty.com')
    @browser.text_field(:id, 'user_login_password').set('qwe123')
    @browser.text_field(:id, 'user_login_password_confirmation').set('qwe123')
    @browser.button(:value, 'Sign up').click
    @browser.h1(:text, 'Investor signup').should exist
  end
end
4

1 回答 1

1

我认为您误解了 if-elsif-else 语句的工作原理。只有 1 个 if/elsif/else 代码块将被执行。换句话说,该语句永远不会尝试“we@we.com”,如果失败则尝试“er@er.com”。

如果意图只是尝试每个用户直到成功注册,您可以迭代用户名:

Given /^I have signed up as a lender'$/ do
    user_names = ['qw@qw.com', 'we@we.com', 'er@er.com', 'rt@rt.com', 'ty@ty.com']

    user_names.each do |user_name|
        @browser.radio(:id, 'user_group_name_lenders').set
        @browser.text_field(:id, 'user_username').set(user_name)
        @browser.text_field(:id, 'user_username_confirmation').set(user_name)
        @browser.text_field(:id, 'user_login_password').set('qwe123')
        @browser.text_field(:id, 'user_login_password_confirmation').set('qwe123')      
        @browser.button(:value, 'Sign up').click

        break if @browser.h1(:text, 'Investor signup').exists?
    end
    @browser.text_field(:id, 'lender_lender_profile_attributes_first_name').should exist
end

这将依次尝试每个用户名,直到其中一个有效或您的用户名用完为止。

于 2012-12-04T17:29:16.513 回答