我不确定为什么我不能clear
我的输入字段。
PageObject :
element(:test_input_field) { |b| b.input(class: "search-field") }
def set_search_value(search_entry)
test_input_field.when_present.clear
test_input_field.when_present.set(search_entry)
end
Step_file :
page.set_search_value(search_entry)
输出:
undefined method `clear' for #'<'Watir::Input:0x00000003980d20'>' (NoMethodError)
答案 0 :(得分:1)
未为通用输入元素定义clear
(和set
)方法 - 即Watir::Input
。它们仅针对特定输入类型定义 - 文本字段,复选框等。
要使代码有效,您需要将input
转换为更具体的类型,这可能是文本字段。您可以使用to_subtype
方法执行此操作:
test_input_field.when_present.to_subtype.clear
test_input_field.when_present.to_subtype.set(search_entry)
正如@SaurabhGaur所提到的那样,set
已经从清除现有值开始,所以你可以这样做:
test_input_field.when_present.to_subtype.set(search_entry)
除非input
类型发生更改,否则将元素定义为text_field
会更有意义,因此您无需转换它。它可能取决于您使用的页面对象库,但我希望您可以这样做:
element(:test_input_field) { |b| b.text_field(class: "search-field") }
def set_search_value(search_entry)
test_input_field.when_present.clear
test_input_field.when_present.set(search_entry)
end