我已经开始使用简单的Rspec例子,Capybara。我遇到过几个问题。这个问题可能是因为我有使用.btn-inverse:hover {
color: white;
}
和cucumber
的经验,但我在这里使用page_object gem
和capybara
。
我试过了: 的 my_example_spec.rb require_relative'支持/ spec_helper' require_relative'pages / login_page'
Site_prism gem
和 login_page.rb
describe 'My behaviour' do
it 'should do something'do
@login_page = LoginPage.new
@login_page.load
@login_page.login('autouser','password')
end
end
问题是:
当我运行class LoginPage < SitePrism::Page
set_url "/login"
element :username, "input[id='username']"
element :password, "input[id='password']"
element :submit, "input[id='submit']"
def login(username,password)
@login_page.username.set username
@login_page.password.set password
@login_page.submit.click
end
end
时,它会出错
my_example_spec.rb
不应该是Testing started at ...
Run options: include {:full_description=>/My\ behaviour\ should\ do\ something/}
NoMethodError: undefined method `username' for nil:NilClass
./pages/login_page.rb:10:in `login'
./my_example_spec.rb:11:in `block (2 levels) in <top (required)>'
-e:1:in `load'
-e:1:in `<main>'
。它应该导航到该页面并运行on(LoginPage).login (autouser, password)
方法。这是login
的工作方式,相当于page_object gem
答案 0 :(得分:1)
LoginPage类中的登录方法应为
def login(username,password)
username.set username
password.set password
submit.click
end
@login_page不是LoginPage类的实例变量,因此无法在类中访问它。因为你已经在课堂上,所以在课堂上也没有必要。