【问题标题】:Rspec, capybara getting started issuesRspec,capybara 入门问题
【发布时间】: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 

问题是:

  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

【问题讨论】:

  • 它在你的login 方法中说@login_page 是零。这是在哪里定义的?
  • login_page.rb 是上面代码中 LoginPage 的类文件。一切正常,它启动浏览器,加载 URL(即@login_page.load)。如果login_page 类有问题,那么.load 将不起作用。所以我认为我调用loginmethod 的方式有问题。你对第二个查询有什么想法吗?

标签: ruby rspec site-prism


【解决方案1】:

LoginPage 类中的登录方法应该是

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多