清除输入字段:#<Watir::Input:XYZ> 的未定义方法“clear”(NoMethodError)
Clear input field: undefined method `clear' for #<Watir::Input:XYZ> (NoMethodError)
我不确定为什么我不能 clear
我的输入字段。
页面对象:
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)
未为通用输入元素定义 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
我不确定为什么我不能 clear
我的输入字段。
页面对象:
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)
未为通用输入元素定义 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