51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
# File 'lib/viewer.rb', line 51
def element(name, selector=name.to_s, options={}, &selector_proc)
if options.empty? && selector.is_a?(::Hash)
options = selector
selector = name
end
selector = selector_proc if selector_proc
selector_type = options[:by] || @default_selector_type || :id
output_type = options[:as] || :value
define_method("#{name}_element_reader") do
ElementReader.new(self, selector, selector_type)
end
define_method("#{name}_element") do
send("#{name}_element_reader").get
end
define_method(name) do
element_reader = send("#{name}_element_reader")
ElementValueReader.new(element_reader, output_type).get
end
define_method("#{name}=") do |new_value|
element_reader = send("#{name}_element_reader")
raise "parameters required" if element_reader.requires_parameters?
ElementValueWriter.new(element_reader.get, output_type).value = new_value
end
define_method("#{name}_present?") do |*arguments|
raise ArgumentError(1, arguments.length) if arguments.length > 1
timeout = arguments[0].to_f
element_present? selector_type, selector, timeout
end
alias_method "has_#{name}?", "#{name}_present?"
end
|