我从简单的 Rspec 示例开始,Capybara。我遇到了几个问题。这个问题可能是因为我有使用cucumber
and的经验page_object gem
,但这里我使用的是capybara
and Site_prism gem
。
我试过: my_example_spec.rb require_relative 'Support/spec_helper' require_relative 'pages/login_page'
describe 'My behaviour' do
it 'should do something'do
@login_page = LoginPage.new
@login_page.load
@login_page.login('autouser','password')
end
end
和login_page.rb
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
相当于site_prism gem