返回一个表示目标页面的新页面对象



我是新的硒和试图设置一些PageObjects。现在,我有两个PageObjects: LoginProjectIndex。在Login.rb中,我有一个方法successful_login填充电子邮件地址,然后单击登录按钮,显示项目索引页。我的理解是,点击登录应该返回ProjectIndex的实例,但我似乎不能得到这个工作。当测试运行时,我得到以下错误:

  1) Login succeeded
      Failure/Error: expect(@project_index.loaded?).to be true
       NoMethodError:
        undefined method `loaded?' for nil:NilClass
 # ./spec/login_spec.rb:22:in `block (2 levels) in <top (required)>'

这是我的测试(在login_spec.rb):

it 'succeeded' do
 @login.successful_login 'victor@something.com'
 expect(@project_index.loaded?).to be true
end

我的/pages/login.rb文件:

class Login < Base
 ...
 def successful_login(email)
   send_keys EMAIL_INPUT, email
   click SIGNIN_BUTTON
   @project_index = ProjectIndex.new(@driver)
 end
...
end

我的/pages/project_index.rb文件:

class ProjectIndex < Base
...
 def loaded?
  wait_for(6) { displayed? NAVIGATION_BAR }
 end
...
end

谢谢,任何帮助都是感激的!

login_spec.rb中,尝试这样做:(注意您需要传入驱动程序,除非您在login.rb中设置@driver)

 @project_index = @login.successful_login 'victor@something.com', driver
 expect(@project_index.loaded?).to be true

然后在/pages/login.rb中这样做:

def successful_login(email, driver)
   send_keys EMAIL_INPUT, email
   click SIGNIN_BUTTON
   ProjectIndex.new(driver)
end

最新更新