【发布时间】:2015-11-15 10:56:40
【问题描述】:
我从简单的 Rspec 示例开始,Capybara。我遇到了几个问题。这个问题可能是因为我有使用cucumber 和page_object gem 的经验,但这里我使用的是capybara 和Site_prism gem。
我尝试过: my_example_spec.rb require_relative '支持/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
【问题讨论】:
-
它在你的
login方法中说@login_page是零。这是在哪里定义的? -
login_page.rb是上面代码中 LoginPage 的类文件。一切正常,它启动浏览器,加载 URL(即@login_page.load)。如果login_page类有问题,那么.load将不起作用。所以我认为我调用loginmethod 的方式有问题。你对第二个查询有什么想法吗?
标签: ruby rspec site-prism