我有一个输入元素,该元素具有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")
答案 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'