将 type="date" 添加到 text_field 元素

adding type="date" to the text_field elements

我有一个输入元素,其属性为 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")

对此有一个未完成的功能请求 - https://github.com/cheezy/page-object/issues/307

现在,我建议 monkey-patching 将功能添加到访问器模块中。这基本上就是功能请求需要添加的内容。

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

这为字段提供 setter 和 getter:

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