Rspec,capybara开始问题

时间:2015-11-15 10:56:41

标签: ruby rspec site-prism

我已经开始使用简单的Rspec例子,Capybara。我遇到过几个问题。这个问题可能是因为我有使用.btn-inverse:hover { color: white; } cucumber的经验,但我在这里使用page_object gemcapybara

我试过了: 的 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

问题是:

  1. 当我运行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
  2. 不应该是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

1 个答案:

答案 0 :(得分:1)

LoginPage类中的登录方法应为

def login(username,password)
  username.set username
  password.set password
  submit.click
end

@login_page不是LoginPage类的实例变量,因此无法在类中访问它。因为你已经在课堂上,所以在课堂上也没有必要。