【问题标题】:Selenium - Return a new page object representing the destination pageSelenium - 返回代表目标页面的新页面对象
【发布时间】:2015-09-20 07:43:32
【问题描述】:

我是 Selenium 的新手,正在尝试设置一些 PageObjects。现在,我有两个PageObjectsLoginProjectIndex。在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

谢谢,感谢任何帮助!

【问题讨论】:

    标签: ruby-on-rails ruby selenium


    【解决方案1】:

    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
    

    【讨论】:

    • 谢谢@stytown!当我在login_spec.rb 中使用@driver 时,它可以工作,如下所示:@project_index = @login.successful_login 'victor@honchodesign.com', @driver expect(@project_index.loaded?).to be true 不确定这对我的设置意味着什么,但似乎工作正常。
    • 太棒了,很高兴它成功了!您介意点击左侧的复选标记,让人们知道您的问题已得到解答吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多