我是红宝石的完全新手,但我觉得这个代码可以改进。
class LoginPage < BasePage
def initialize(session)
@session = session
end
def login(params)
@session.within '#login-form' do
@session.fill_in 'Login', with: params[:login]
@session.fill_in 'Password',with: params[:password]
end
@session.click_button 'Login'
end
end
我正在考虑做类似的事情:
@session do
within '#login-form' do
fill_in 'Login', with: params[:login]
fill_in 'Password', with params[:password]
end
click_buttton 'Login'
end
但是这段代码不起作用。任何想法如何改变这些方法调用的范围,使它们调用特定的实例变量。
答案 0 :(得分:2)
您可以使用instance_eval
执行此操作。
@session.instance_eval do
within '#login-form' do
fill_in 'Login', with: params[:login]
fill_in 'Password', with params[:password]
end
click_buttton 'Login'
end
但是,我认为这会让您的代码难以阅读,因为在扫描代码时很容易错过instance_eval
。