将type =“ date”添加到text_field元素

时间:2019-07-17 20:54:16

标签: page-object-gem

我有一个输入元素,该元素具有type =“ date”作为属性,当我尝试将页面对象元素定义为text_field时,找不到它。

这是html

<input id="dteVStartPicker" type="date"style="">

我问是因为我已经创建了一个小部件,并且想使用

class SendkeyField < PageObject::Elements::TextField
,,,
PageObject.register_widget :sendkey_field, SendkeyField, :text_field

这就是我想要的page_object

 sendkey_field(:start_date, :id="dteVStartPicker")

1 个答案:

答案 0 :(得分:0)

对此有一个出色的功能要求-https://github.com/cheezy/page-object/issues/307

就目前而言,我建议将功能修补到Accessors模块中。基本上,这就是功能要求所要添加的内容。

require 'page-object'

module PageObject
  module Accessors
    def date_field(name, identifier={:index => 0}, &block)
      define_method("#{name}_element") do
        return call_block(&block) if block_given?
        platform.date_field(identifier.clone)
      end

      define_method("#{name}?") do
        self.send("#{name}_element").exists?
      end    

      define_method(name) do
        self.send("#{name}_element").value
      end

      define_method("#{name}=") do |value|
        self.send("#{name}_element").value = value
      end
    end
  end
end

那么您的页面对象将是:

class MyPage
  include PageObject

  date_field(:start_date, id: 'dteVStartPicker')
end

哪个为该字段提供设置器和获取器:

page = MyPage.new(browser)
page.start_date = '2019-11-02'
p page.start_date
#=> '2019-11-02'