我是新的硒和试图设置一些PageObjects
。现在,我有两个PageObjects
: Login
和ProjectIndex
。在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