将水豚会话传递给页面对象
Passing Capybara session to an page object
我正在尝试使用水豚和 rspec 来简单实现页面对象模式。我正处于需要从不同页面对象实例方法初始化新页面对象的地步。但是在初始化新页面对象后,系统会抱怨
undefined local variable or method `page'
我想我应该以某种方式将驱动程序会话传递给新对象,但我不知道如何
这是我的第一个 class:
class DashBoardLoginPage
include Dashboard
include Logging
include Locator
include Capybara::DSL
def initialize
super
@locator = locators_for :dashboard_login_page_selectors
log.info "Dashboard Login page initialized"
end
#param user is a hash with name and pass keys
def login_user user
visit '/'
fill_in user_name_field, with: user[:name]
fill_in user_password_field, with: user[:password]
click_button login_button
page.save_screenshot "#{Time.now.getutc}_screenshot.png"
dashboard_landing_page = DashboardLandingPage.new
end
end
和我的第二个对象:
require_relative "dashboard_base"
class DashboardLandingPage < DashboardBasePage
def initialize
super
@locator = locators_for :dashboard_login_page_selectors
log.info "Dashboard Landing page initialized"
end
def is_open?
page.has_title? "Apps - Fyber Ad Monetization Dashboard"
end
end
欢迎使用计算器!
您也许可以通过 Capybara.current_session
访问 page
。
此外,您是否考虑过使用一种已经可用的页面对象 gem?它们可以简化您正在做的很多事情。
https://github.com/natritmeyer/site_prism
https://github.com/andyw8/capybara-page-object
您需要在 DashboardLandingPage
中包含 Capybara::DSL
我正在尝试使用水豚和 rspec 来简单实现页面对象模式。我正处于需要从不同页面对象实例方法初始化新页面对象的地步。但是在初始化新页面对象后,系统会抱怨
undefined local variable or method `page'
我想我应该以某种方式将驱动程序会话传递给新对象,但我不知道如何 这是我的第一个 class:
class DashBoardLoginPage
include Dashboard
include Logging
include Locator
include Capybara::DSL
def initialize
super
@locator = locators_for :dashboard_login_page_selectors
log.info "Dashboard Login page initialized"
end
#param user is a hash with name and pass keys
def login_user user
visit '/'
fill_in user_name_field, with: user[:name]
fill_in user_password_field, with: user[:password]
click_button login_button
page.save_screenshot "#{Time.now.getutc}_screenshot.png"
dashboard_landing_page = DashboardLandingPage.new
end
end
和我的第二个对象:
require_relative "dashboard_base"
class DashboardLandingPage < DashboardBasePage
def initialize
super
@locator = locators_for :dashboard_login_page_selectors
log.info "Dashboard Landing page initialized"
end
def is_open?
page.has_title? "Apps - Fyber Ad Monetization Dashboard"
end
end
欢迎使用计算器!
您也许可以通过 Capybara.current_session
访问 page
。
此外,您是否考虑过使用一种已经可用的页面对象 gem?它们可以简化您正在做的很多事情。
https://github.com/natritmeyer/site_prism https://github.com/andyw8/capybara-page-object
您需要在 DashboardLandingPage
中包含 Capybara::DSL