Ruby on rails Selenium-返回表示目标页面的新页面对象
我是Selenium新手,正在尝试设置一些页面对象。现在,我有两个页面对象:Login和ProjectIndex。在Login.rb中,我有一个成功登录的方法,它填充一个电子邮件地址,然后单击一个登录按钮,它显示项目索引页面。我的理解是,单击“登录”应该返回ProjectIndex的一个实例,但我似乎无法让它正常工作。当测试运行时,我得到以下错误:Ruby on rails Selenium-返回表示目标页面的新页面对象,ruby-on-rails,ruby,selenium,Ruby On Rails,Ruby,Selenium,我是Selenium新手,正在尝试设置一些页面对象。现在,我有两个页面对象:Login和ProjectIndex。在Login.rb中,我有一个成功登录的方法,它填充一个电子邮件地址,然后单击一个登录按钮,它显示项目索引页面。我的理解是,单击“登录”应该返回ProjectIndex的一个实例,但我似乎无法让它正常工作。当测试运行时,我得到以下错误: 1) Login succeeded Failure/Error: expect(@project_index.loaded?).t
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)>'
My/pages/login.rb文件:
谢谢,非常感谢您的帮助 在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中执行以下操作:
谢谢@stytown!当我在login\u spec.rb中使用@driver时,它会起作用,就像这样:@project\u index=@login.successful\u login'victor@honchodesign.com“,@driverexpect@project_index.loaded?.说实话,我不确定这对我的设置意味着什么,但似乎工作正常。太棒了,很高兴它工作了!你介意点击左边的复选标记让人们知道你的问题已经得到了回答吗?
class Login < Base
...
def successful_login(email)
send_keys EMAIL_INPUT, email
click SIGNIN_BUTTON
@project_index = ProjectIndex.new(@driver)
end
...
end
class ProjectIndex < Base
...
def loaded?
wait_for(6) { displayed? NAVIGATION_BAR }
end
...
end
@project_index = @login.successful_login 'victor@something.com', driver
expect(@project_index.loaded?).to be true
def successful_login(email, driver)
send_keys EMAIL_INPUT, email
click SIGNIN_BUTTON
ProjectIndex.new(driver)
end