我正在使用watir-webdriver。这是我的步骤def,有人可以纠正我在这里做错了什么。我正在尝试使用一组详细信息进行注册。如果已经使用了第一组细节,我希望它使用第二组细节,依此类推。不幸的是,当测试运行时,它似乎只使用第一组和第二组细节。它不会移动到第三组。请帮忙或建议。
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
答案 0 :(得分:1)
我认为你误解了if-elsif-else语句是如何工作的。只会执行一个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
这将依次尝试每个用户名,直到其中任何一个工作或用完您的用户名。