0

我从简单的 Rspec 示例开始,Capybara。我遇到了几个问题。这个问题可能是因为我有使用cucumberand的经验page_object gem,但这里我使用的是capybaraand 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 

问题是:

  1. 当我运行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>'
    
  2. 不应该吧on(LoginPage).login (autouser, password)。它应该导航到页面并运行login方法。这就是它的工作原理,page_object gem相当于site_prism gem

4

1 回答 1

1

LoginPage 类中的登录方法应该是

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

@login_page 不是 LoginPage 类的实例变量,因此无法在类内部访问。由于您已经在课堂上,因此在课堂内也没有必要。

于 2016-01-14T17:31:22.173 回答