0

我尝试从我的模块访问自定义 JS-widget。基本页面类只包括 PageObject、DataMagic 和 RSpec::Matchers。

我的课

require_all 'lib/pages/billing/billing_form_panel.rb'

class RealtyCpBillingPage < BasePage
    include BillingFormPanel
end

模块

require_all 'lib/widgets/jquery_datepicker.rb'

module BillingFormPanel
    include PageObject

    button :show_datepicker, class: 'ui-datepicker-trigger'

    jquery_datepicker :datepicker, id: 'ui-datepicker-div'

    def datepicker
        datepicker_element
    end

    def select_packet data
        if data['date']
            show_datepicker
            data['date'] = data['date'].split(' ').reverse
            datepicker.year = data['date'][0]
            datepicker.month = data['date'][1]
        end
    end
end

JQuery UI 日期选择器小部件

class JQueryDatepicker < PageObject::Elements::Div

    include PageObject

    PageObject.register_widget :jquery_datepicker, JQueryDatepicker, :div

    def month month
        select_list_element(class: 'ui-datepicker-month').select month
    end

    def year year
        select_list_element(class: 'ui-datepicker-year').select year
    end
end

和步骤:

Если(/^если выбираю тариф:$/) do |table|
  on(RealtyCpBillingPage).select_packet table.hashes.first
end

运行此测试时,我看到以下错误:

  Unable to pick a platform for the provided browser (RuntimeError)
  ./lib/pages/billing/billing_form_panel.rb:22:in `datepicker'
  ./lib/pages/billing/billing_form_panel.rb:34:in `select_packet'

那么,如何从我的模块访问该小部件?

UPD:浏览器从这里开始hooks.rb

Before do
    @browser = Watir::Browser.new :firefox
    @browser.driver.manage.timeouts.implicit_wait = 8
end

After do
    @browser.close
end
4

1 回答 1

0

无需在小部件类中包含 PageObject。完整的答案在这里 https://github.com/cheezy/page-object/issues/173

于 2013-07-11T05:14:26.660 回答