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