Watir:传递动态选择器
Watir: Passing dynamic selector
有没有办法将一组动态选项传递给浏览器中的文本区域元素?
options = {
:type => 'textarea',
:selector => ':id',
:field => 'id_of_textarea_field',
:value => 'Joe Salesperson'
}
browser.textarea(options[:selector] => options[:field]).set ''
收到错误:
invalid attribute: ":id"
此处列出了类似的话题 (selecting elements using variables in ruby /watir),但没有答案。
options = {
:type => 'textarea',
:selector => :id,
:field => 'id_of_textarea_field',
:value => 'Joe Salesperson'
}
你可以只传递标识符,不需要引号。
2017-01-03,更新用例。这是我正在使用的方法和调用的声明。实际代码比我在此处粘贴的要冗长得多,并且包含不同的验证。在示例中,您会注意到一个简单的开关块,它根据传递的元素类型(特别是文本区域、文本字段和 select 元素)设置适当的信息。
def validateInput(options = {})
success = true
begin
case options[:type]
when 'textarea', 'text_field'
Watir::Wait.until{$browser.textarea(options[:selector] => options[:field]).present?}
$browser.textarea(options[:selector] => options[:field]).set options[:value]
when 'select'
$browser.select_list(options[:selector] => options[:field]).select_value options[:value]
else
puts "in else"
end
end
rescue => e
$message.push("Failed to validate '#{options[:field]}' field. #{e}")
success = false
end
return success
end
validateInput({
:type => 'textarea',
:selector => :id,
:field => 'order_approval_comment_name',
:value => 'Joe Salesperson'
})
有没有办法将一组动态选项传递给浏览器中的文本区域元素?
options = {
:type => 'textarea',
:selector => ':id',
:field => 'id_of_textarea_field',
:value => 'Joe Salesperson'
}
browser.textarea(options[:selector] => options[:field]).set ''
收到错误:
invalid attribute: ":id"
此处列出了类似的话题 (selecting elements using variables in ruby /watir),但没有答案。
options = {
:type => 'textarea',
:selector => :id,
:field => 'id_of_textarea_field',
:value => 'Joe Salesperson'
}
你可以只传递标识符,不需要引号。
2017-01-03,更新用例。这是我正在使用的方法和调用的声明。实际代码比我在此处粘贴的要冗长得多,并且包含不同的验证。在示例中,您会注意到一个简单的开关块,它根据传递的元素类型(特别是文本区域、文本字段和 select 元素)设置适当的信息。
def validateInput(options = {})
success = true
begin
case options[:type]
when 'textarea', 'text_field'
Watir::Wait.until{$browser.textarea(options[:selector] => options[:field]).present?}
$browser.textarea(options[:selector] => options[:field]).set options[:value]
when 'select'
$browser.select_list(options[:selector] => options[:field]).select_value options[:value]
else
puts "in else"
end
end
rescue => e
$message.push("Failed to validate '#{options[:field]}' field. #{e}")
success = false
end
return success
end
validateInput({
:type => 'textarea',
:selector => :id,
:field => 'order_approval_comment_name',
:value => 'Joe Salesperson'
})