operawatir 0.3-jruby → 0.3.2-jruby
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +6 -2
- data/LICENSE +1 -1
- data/Rakefile +7 -8
- data/VERSION +1 -1
- data/bin/desktopwatir +3 -0
- data/bin/operawatir +2 -2
- data/lib/operadriver/webdriver-opera.jar +0 -0
- data/lib/operawatir.rb +14 -8
- data/lib/operawatir/browser.rb +49 -38
- data/lib/operawatir/compat/collection.rb +6 -0
- data/lib/operawatir/compat/element.rb +5 -2
- data/lib/operawatir/compat/element_finders.rb +19 -0
- data/lib/operawatir/desktop-waiter.rb +144 -0
- data/lib/operawatir/desktop_browser.rb +506 -0
- data/lib/operawatir/desktop_common.rb +111 -0
- data/lib/operawatir/desktop_container.rb +252 -0
- data/lib/operawatir/desktop_enums.rb +42 -0
- data/lib/operawatir/desktop_exceptions.rb +16 -0
- data/lib/operawatir/element.rb +6 -6
- data/lib/operawatir/exceptions.rb +3 -0
- data/lib/operawatir/keys.rb +116 -0
- data/lib/operawatir/platform.rb +59 -0
- data/lib/operawatir/quickwidgets.rb +3 -0
- data/lib/operawatir/quickwidgets/quick_addressfield.rb +23 -0
- data/lib/operawatir/quickwidgets/quick_button.rb +151 -0
- data/lib/operawatir/quickwidgets/quick_checkbox.rb +58 -0
- data/lib/operawatir/quickwidgets/quick_dialogtab.rb +23 -0
- data/lib/operawatir/quickwidgets/quick_dropdown.rb +27 -0
- data/lib/operawatir/quickwidgets/quick_editfield.rb +115 -0
- data/lib/operawatir/quickwidgets/quick_label.rb +12 -0
- data/lib/operawatir/quickwidgets/quick_radiobutton.rb +11 -0
- data/lib/operawatir/quickwidgets/quick_searchfield.rb +25 -0
- data/lib/operawatir/quickwidgets/quick_tab.rb +66 -0
- data/lib/operawatir/quickwidgets/quick_thumbnail.rb +26 -0
- data/lib/operawatir/quickwidgets/quick_toolbar.rb +11 -0
- data/lib/operawatir/quickwidgets/quick_treeitem.rb +157 -0
- data/lib/operawatir/quickwidgets/quick_treeview.rb +27 -0
- data/lib/operawatir/quickwidgets/quick_widget.rb +369 -0
- data/lib/operawatir/quickwidgets/quick_window.rb +150 -0
- data/lib/operawatir/selector.rb +1 -1
- data/lib/operawatir/version.rb +0 -1
- data/lib/operawatir/window.rb +9 -0
- data/operawatir.gemspec +382 -0
- data/spec/new_watirspec/browser_spec.rb +279 -0
- data/spec/new_watirspec/clipboard_spec.rb +79 -0
- data/spec/new_watirspec/collection_spec.rb +387 -0
- data/spec/new_watirspec/element_spec.rb +456 -0
- data/spec/new_watirspec/guards.rb +39 -0
- data/spec/new_watirspec/keys_spec.rb +206 -0
- data/spec/new_watirspec/server.rb +91 -0
- data/spec/new_watirspec/watirspec_helper.rb +62 -0
- data/spec/new_watirspec/window_spec.rb +370 -0
- data/utils/launchers/launcher-mac +0 -0
- metadata +191 -28
- data/.gitmodules +0 -3
@@ -0,0 +1,27 @@
|
|
1
|
+
module OperaWatir
|
2
|
+
class QuickTreeView < QuickWidget
|
3
|
+
|
4
|
+
# @private
|
5
|
+
# Checks the type of the widget is correct
|
6
|
+
def correct_type?
|
7
|
+
@element.getType == WIDGET_ENUM_MAP[:treeview]
|
8
|
+
end
|
9
|
+
|
10
|
+
#Should rather use what's already in browser
|
11
|
+
def treeitems
|
12
|
+
treeitems = driver.getQuickWidgetList(driver.getWindowName(window_id)).map do |java_widget|
|
13
|
+
case java_widget.getType
|
14
|
+
when QuickWidget::WIDGET_ENUM_MAP[:treeitem]
|
15
|
+
QuickTreeItem.new(self,java_widget)
|
16
|
+
end
|
17
|
+
end.select { |item| item != nil }
|
18
|
+
treeitems.select {|item| item.parent_name == name }
|
19
|
+
end
|
20
|
+
|
21
|
+
def num_treeitems
|
22
|
+
treeitems.select { |item| item.position[1] == 0 }.length
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
@@ -0,0 +1,369 @@
|
|
1
|
+
module OperaWatir
|
2
|
+
class QuickWidget
|
3
|
+
include DesktopCommon
|
4
|
+
include DesktopContainer
|
5
|
+
|
6
|
+
# @private
|
7
|
+
# window_id is set if constructor is called on a (parent) window
|
8
|
+
# location is set is this is called on a (parent) widget
|
9
|
+
def initialize(container, method, selector=nil, location=nil, window_id=-1)
|
10
|
+
@container = container
|
11
|
+
|
12
|
+
if method.is_a? Java::ComOperaCoreSystems::QuickWidget
|
13
|
+
@elm = method
|
14
|
+
else
|
15
|
+
@method = method
|
16
|
+
@selector = selector
|
17
|
+
@location = location
|
18
|
+
@window_id = window_id
|
19
|
+
#puts "Constructed widget #{@selector} inside #{@location} in window with id #{@window_id}"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def open_window_with_hover(win_name = "")
|
24
|
+
wait_start
|
25
|
+
element.hover
|
26
|
+
wait_for_window_shown(win_name)
|
27
|
+
end
|
28
|
+
|
29
|
+
######################################################################
|
30
|
+
# Checks whether a widget exists or not
|
31
|
+
#
|
32
|
+
# @return [Boolean] true if the widget exists otherwise false
|
33
|
+
#
|
34
|
+
def exist?
|
35
|
+
!!element
|
36
|
+
rescue Exceptions::UnknownObjectException
|
37
|
+
false
|
38
|
+
end
|
39
|
+
alias_method :exists?, :exist?
|
40
|
+
|
41
|
+
######################################################################
|
42
|
+
# Checks if a widget is enabled or not
|
43
|
+
#
|
44
|
+
# @return [Boolean] true if enabled otherwise false
|
45
|
+
#
|
46
|
+
# @raise [Exceptions::UnknownObjectException] if the widget could not be found
|
47
|
+
# using the specified method
|
48
|
+
#
|
49
|
+
def enabled?
|
50
|
+
element.isEnabled
|
51
|
+
end
|
52
|
+
|
53
|
+
######################################################################
|
54
|
+
# Checks if a widget is visible or not
|
55
|
+
#
|
56
|
+
# @return [Boolean] true if visible otherwise false
|
57
|
+
#
|
58
|
+
# @raise [Exceptions::UnknownObjectException] if the widget cannot be found
|
59
|
+
# using the specified method
|
60
|
+
#
|
61
|
+
def visible?
|
62
|
+
element.isVisible
|
63
|
+
end
|
64
|
+
|
65
|
+
######################################################################
|
66
|
+
# Get the text of the widget
|
67
|
+
#
|
68
|
+
# @note This method should not be used to check the text in a widget if
|
69
|
+
# the text is in the Opera language file. Use verify_text or
|
70
|
+
# verify_includes_text instead
|
71
|
+
#
|
72
|
+
# @return [String] text of the widget
|
73
|
+
#
|
74
|
+
# @raise [Exceptions::UnknownObjectException] if the widget cannot be found
|
75
|
+
# using the specified method
|
76
|
+
#
|
77
|
+
def text
|
78
|
+
element.getText
|
79
|
+
end
|
80
|
+
|
81
|
+
######################################################################
|
82
|
+
# Gets the type of a widget
|
83
|
+
#
|
84
|
+
# @return [Symbol] type of the widget (e.g. :dropdown, :button)
|
85
|
+
#
|
86
|
+
# @raise [Exceptions::UnknownObjectException] if the widget cannot be found
|
87
|
+
# using the specified method
|
88
|
+
#
|
89
|
+
def type
|
90
|
+
WIDGET_ENUM_MAP.invert[element.getType]
|
91
|
+
end
|
92
|
+
|
93
|
+
######################################################################
|
94
|
+
# Get the name of the widget (as it appears in dialog.ini or code)
|
95
|
+
#
|
96
|
+
# @return [String] name of the widget
|
97
|
+
#
|
98
|
+
# @raise [Exceptions::UnknownObjectException] if the widget cannot be found
|
99
|
+
# using the specified method
|
100
|
+
#
|
101
|
+
def name
|
102
|
+
element.getName
|
103
|
+
end
|
104
|
+
|
105
|
+
######################################################################
|
106
|
+
# Get a string representation of the widget
|
107
|
+
#
|
108
|
+
# @return [String] representation of the widget
|
109
|
+
#
|
110
|
+
# @raise [Exceptions::UnknownObjectException] if the widget cannot be found
|
111
|
+
# using the specified method
|
112
|
+
#
|
113
|
+
def to_s
|
114
|
+
"#{type.to_s.capitalize} #{name}, visible=#{visible?}, enabled=#{enabled?}, text=#{text}, parentName=#{parent_name}, position=#{row},#{col}"
|
115
|
+
end
|
116
|
+
|
117
|
+
######################################################################
|
118
|
+
# Checks that the text in the widget matches the text as loaded
|
119
|
+
# from the current language file in Opera using the string_id
|
120
|
+
#
|
121
|
+
# @param [String] string_id String ID to use to load the string from the current
|
122
|
+
# language file (e.g. "D_NEW_PREFERENCES_GENERAL")
|
123
|
+
#
|
124
|
+
# @return [Boolean] true if the text matches, otherwise false
|
125
|
+
#
|
126
|
+
# @raise [Exceptions::UnknownObjectException] if the widget cannot be found
|
127
|
+
# using the specified method
|
128
|
+
#
|
129
|
+
def verify_text(string_id)
|
130
|
+
element.verifyText(string_id);
|
131
|
+
end
|
132
|
+
|
133
|
+
alias_method :is_text?, :verify_text
|
134
|
+
|
135
|
+
######################################################################
|
136
|
+
# Checks that the text in the widget includes the text as loaded
|
137
|
+
# from the current language file in Opera using the string_id
|
138
|
+
#
|
139
|
+
# @param [String] string_id String ID to use to load the string from the current
|
140
|
+
# language file (e.g. "D_NEW_PREFERENCES_GENERAL")
|
141
|
+
#
|
142
|
+
# @return [Boolean] true if the text is included, otherwise false
|
143
|
+
#
|
144
|
+
# @raise [Exceptions::UnknownObjectException] if the widget cannot be found
|
145
|
+
# using the specified method
|
146
|
+
#
|
147
|
+
def verify_includes_text(string_id)
|
148
|
+
element.verifyContainsText(string_id)
|
149
|
+
end
|
150
|
+
|
151
|
+
alias_method :includes_text?, :verify_includes_text
|
152
|
+
|
153
|
+
######################################################################
|
154
|
+
# Prints out all of the row/col information in single lines. Used to
|
155
|
+
# check items from lists
|
156
|
+
#
|
157
|
+
# @raise [Exceptions::UnknownObjectException] if the widget cannot be found
|
158
|
+
# using the specified method
|
159
|
+
#
|
160
|
+
def print_row
|
161
|
+
if element.getColumn() == 0
|
162
|
+
puts "Parent: " + element.getParentName() + ", Item: " + element.getRow().to_s + ", Text: " + text
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
# @return position for elements that have a position, else false
|
167
|
+
def position
|
168
|
+
return [row, col] if type == :treeitem
|
169
|
+
return col if type == :tabbutton
|
170
|
+
false
|
171
|
+
end
|
172
|
+
|
173
|
+
######################################################################
|
174
|
+
# Prints out all of the internal information about the widget. Used
|
175
|
+
# to discover the names of widgets and windows to use in the tests
|
176
|
+
#
|
177
|
+
# @raise [Exceptions::UnknownObjectException] if the widget cannot be found
|
178
|
+
# using the specified method
|
179
|
+
#
|
180
|
+
def print_widget_info
|
181
|
+
puts " Name: " + name
|
182
|
+
puts " Text: " + text
|
183
|
+
puts " Type: " + type.to_s
|
184
|
+
puts " Parent: " + element.getParentName()
|
185
|
+
puts "Visible: " + visible?.to_s
|
186
|
+
puts "Enabled: " + enabled?.to_s
|
187
|
+
puts " Pos: x=" + element.getRect().x.to_s + ", y=" + element.getRect().y.to_s
|
188
|
+
puts " Size: width=" + element.getRect().width.to_s + ", height=" + element.getRect().height.to_s
|
189
|
+
puts " Ref: row=" + element.getRow().to_s + ", col=" + element.getColumn().to_s
|
190
|
+
puts "selected: " + element.isSelected().to_s
|
191
|
+
puts ""
|
192
|
+
end
|
193
|
+
|
194
|
+
# @private
|
195
|
+
def driver
|
196
|
+
@container.driver
|
197
|
+
end
|
198
|
+
|
199
|
+
# parent is container
|
200
|
+
# Get parent widget name
|
201
|
+
def parent_name
|
202
|
+
element.getParentName()
|
203
|
+
end
|
204
|
+
|
205
|
+
# Focus a widget with a click
|
206
|
+
def focus_with_click
|
207
|
+
click
|
208
|
+
# No event yet so just cheat and sleep
|
209
|
+
sleep(0.1);
|
210
|
+
end
|
211
|
+
|
212
|
+
#@private
|
213
|
+
def value
|
214
|
+
return element.getValue
|
215
|
+
end
|
216
|
+
|
217
|
+
protected
|
218
|
+
#@private
|
219
|
+
# Return the element
|
220
|
+
def element(refresh = false)
|
221
|
+
if (@elm == nil || refresh == true)
|
222
|
+
@elm = find
|
223
|
+
end
|
224
|
+
|
225
|
+
raise(Exceptions::UnknownObjectException, "Element #{@selector} not found using #{@method}") unless @elm
|
226
|
+
@elm
|
227
|
+
end
|
228
|
+
|
229
|
+
|
230
|
+
private
|
231
|
+
|
232
|
+
def drag_and_drop_on(other, drop_pos)
|
233
|
+
element.dragAndDropOn(other.element, DROPPOSITION_ENUM_MAP[drop_pos])
|
234
|
+
end
|
235
|
+
|
236
|
+
# Gets the widget name (used as parent name when creating child widget)
|
237
|
+
def parent_widget
|
238
|
+
if @selector == nil && @elm != nil
|
239
|
+
set_selector
|
240
|
+
end
|
241
|
+
|
242
|
+
#FIXME: Shouldn't this always be name if present, then text if present, else pos?
|
243
|
+
case @method
|
244
|
+
when :name
|
245
|
+
name
|
246
|
+
when :text
|
247
|
+
#text
|
248
|
+
name.length > 0 ? name : text
|
249
|
+
when :pos
|
250
|
+
# Pos items will have the name as the parent or
|
251
|
+
# the text if there is no name
|
252
|
+
name.length > 0 ? name : text
|
253
|
+
end
|
254
|
+
end
|
255
|
+
|
256
|
+
# Get row
|
257
|
+
def row
|
258
|
+
element.getRow()
|
259
|
+
end
|
260
|
+
|
261
|
+
# Get column
|
262
|
+
def col
|
263
|
+
element.getColumn()
|
264
|
+
end
|
265
|
+
|
266
|
+
# Gets the window id to use for the search
|
267
|
+
def window_id
|
268
|
+
# Need to pass on the current setting of @window_id to make
|
269
|
+
# nesting of quick widgets work
|
270
|
+
@window_id
|
271
|
+
end
|
272
|
+
|
273
|
+
# Click widget
|
274
|
+
def click(button = :left, times = 1, *opts)
|
275
|
+
raise Exceptions::WidgetDisabledException, "Element #{@selector} is disabled" unless enabled?
|
276
|
+
|
277
|
+
#Some buttons etc. aren't visible until hovering them
|
278
|
+
if (visible? == false and type != :dialogtab)
|
279
|
+
element.hover
|
280
|
+
element(true)
|
281
|
+
end
|
282
|
+
|
283
|
+
# Dialog tabs are always visible even if the page they are connected to isn't
|
284
|
+
if visible? == true or type == :dialogtab
|
285
|
+
#DesktopEnums::KEYMODIFIER_ENUM_MAP.each { |k, v| puts "#{k},#{v}"}
|
286
|
+
button = DesktopEnums::MOUSEBUTTON_ENUM_MAP[button]
|
287
|
+
list = Java::JavaUtil::ArrayList.new
|
288
|
+
opts.each { |mod| list << DesktopEnums::KEYMODIFIER_ENUM_MAP[mod] }
|
289
|
+
element.click(button, times, list)
|
290
|
+
else
|
291
|
+
raise(DesktopExceptions::WidgetNotVisibleException, "Widget #{name.length > 0 ? name : text} not visible")
|
292
|
+
end
|
293
|
+
end
|
294
|
+
|
295
|
+
# Right click a widget
|
296
|
+
def right_click
|
297
|
+
click(:right, 1)
|
298
|
+
end
|
299
|
+
|
300
|
+
# double click widget
|
301
|
+
def double_click
|
302
|
+
click(:left, 2)
|
303
|
+
end
|
304
|
+
|
305
|
+
|
306
|
+
def set_selector
|
307
|
+
if @elm.name.length > 0
|
308
|
+
@method = :name
|
309
|
+
@selector = @elm.name
|
310
|
+
elsif @elm.text.length > 0
|
311
|
+
@method = :text
|
312
|
+
@selector = @elm.text
|
313
|
+
elsif @elm.type == :treeitem
|
314
|
+
@method = :pos
|
315
|
+
@selector = [@elm.row, @elm.col]
|
316
|
+
=begin
|
317
|
+
# tabbuttons now specified by generated name
|
318
|
+
elsif @elm.type == :tabbutton
|
319
|
+
@method = :pos
|
320
|
+
@selector = @elm.col
|
321
|
+
=end
|
322
|
+
end
|
323
|
+
@location = element.getParentName()
|
324
|
+
@window_id = -1
|
325
|
+
end
|
326
|
+
|
327
|
+
# Finds the element on the page.
|
328
|
+
def find
|
329
|
+
#If @method set and we do new find because of refresh, we need to get @selector first
|
330
|
+
#Have the java object because the construct was done on it
|
331
|
+
if @selector == nil && @elm != nil
|
332
|
+
set_selector
|
333
|
+
end
|
334
|
+
#puts "<find> Find Widget by " + @method.to_s + " " + @window_id.to_s + ", " + @selector.to_s + ", " + @location.to_s
|
335
|
+
case @method
|
336
|
+
when :name
|
337
|
+
if @location != nil
|
338
|
+
@element = driver.findWidgetByName(@window_id, @selector, @location)
|
339
|
+
else
|
340
|
+
@element = driver.findWidgetByName(@window_id, @selector)
|
341
|
+
end
|
342
|
+
when :string_id
|
343
|
+
if @location != nil
|
344
|
+
@element = driver.findWidgetByStringId(@window_id, @selector, @location)
|
345
|
+
else
|
346
|
+
@element = driver.findWidgetByStringId(@window_id, @selector)
|
347
|
+
end
|
348
|
+
when :text
|
349
|
+
if @location != nil
|
350
|
+
@element = driver.findWidgetByText(@window_id, @selector, @location)
|
351
|
+
else
|
352
|
+
@element = driver.findWidgetByText(@window_id, @selector)
|
353
|
+
end
|
354
|
+
when :pos
|
355
|
+
if @location != nil
|
356
|
+
@element = driver.findWidgetByPosition(@window_id, @selector[0], @selector[1], @location)
|
357
|
+
else
|
358
|
+
@element = driver.findWidgetByPosition(@window_id, @selector[0], @selector[1])
|
359
|
+
end
|
360
|
+
end
|
361
|
+
if @window_id < 0 && @element != nil
|
362
|
+
@window_id = @element.getParentWindowId
|
363
|
+
end
|
364
|
+
raise(Exceptions::UnknownObjectException, "Element #{@selector} not found using #{@method}") unless @element
|
365
|
+
raise(Exceptions::UnknownObjectException, "Element #{@selector} has wrong type #{@element.getType}") unless correct_type?
|
366
|
+
@element
|
367
|
+
end
|
368
|
+
end
|
369
|
+
end
|
@@ -0,0 +1,150 @@
|
|
1
|
+
module OperaWatir
|
2
|
+
class QuickWindow
|
3
|
+
include DesktopCommon
|
4
|
+
include DesktopContainer
|
5
|
+
|
6
|
+
# @private
|
7
|
+
def initialize(container, method, selector=nil)
|
8
|
+
@container = container
|
9
|
+
|
10
|
+
if method.is_a? Java::ComOperaCoreSystems::QuickWindow
|
11
|
+
@elm = method
|
12
|
+
else
|
13
|
+
@method = method
|
14
|
+
@selector = selector
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
######################################################################
|
19
|
+
# Checks whether a widget exists or not
|
20
|
+
#
|
21
|
+
# @return [Boolean] true if the widget exists otherwise false
|
22
|
+
#
|
23
|
+
def exist?
|
24
|
+
!!element
|
25
|
+
rescue Exceptions::UnknownObjectException
|
26
|
+
false
|
27
|
+
end
|
28
|
+
alias_method :exists?, :exist?
|
29
|
+
|
30
|
+
######################################################################
|
31
|
+
# Gets the type of a widget
|
32
|
+
#
|
33
|
+
# @return [Symbol] type of the window (e.g. :dropdown, :button)
|
34
|
+
#
|
35
|
+
def type
|
36
|
+
return WINDOW_ENUM_MAP.invert[@elm.getType] unless @elm == nil
|
37
|
+
return WINDOW_ENUM_MAP.invert[element.getType]
|
38
|
+
end
|
39
|
+
|
40
|
+
######################################################################
|
41
|
+
# Get the name of the widget (as it appears in dialog.ini or code)
|
42
|
+
#
|
43
|
+
# @return [String] name of the widget
|
44
|
+
#
|
45
|
+
# @raise [Exceptions::UnknownObjectException] if the widget could not be found
|
46
|
+
# using the specified method
|
47
|
+
def name
|
48
|
+
element.getName
|
49
|
+
end
|
50
|
+
|
51
|
+
######################################################################
|
52
|
+
# Get the title of the window
|
53
|
+
#
|
54
|
+
# @return [String] title of window
|
55
|
+
#
|
56
|
+
# @raise [Exceptions::UnknownObjectException] if the widget could not be found
|
57
|
+
# using the specified method
|
58
|
+
def title
|
59
|
+
element.getTitle
|
60
|
+
end
|
61
|
+
|
62
|
+
|
63
|
+
######################################################################
|
64
|
+
# Get a string representation of the window
|
65
|
+
#
|
66
|
+
# @return [String] representation of the widget
|
67
|
+
#
|
68
|
+
# @raise [Exceptions::UnknownObjectException] if the widget could not be found
|
69
|
+
# using the specified method
|
70
|
+
def to_s
|
71
|
+
"#{type} #{name}, title=#{title}, id=#{id}, on_screen=#{on_screen?}"
|
72
|
+
end
|
73
|
+
|
74
|
+
######################################################################
|
75
|
+
#
|
76
|
+
# @return [bool] true if window is on screen
|
77
|
+
#
|
78
|
+
# @raise [Exceptions::UnknownObjectException] if the widget could not be found
|
79
|
+
# using the specified method
|
80
|
+
def on_screen?
|
81
|
+
element.isOnScreen
|
82
|
+
end
|
83
|
+
|
84
|
+
alias_method :visible?, :on_screen?
|
85
|
+
|
86
|
+
######################################################################
|
87
|
+
# Get the window id
|
88
|
+
#
|
89
|
+
# @return [int] the windows window_id
|
90
|
+
#
|
91
|
+
# @raise [Exceptions::UnknownObjectException] if the widget could not be found
|
92
|
+
# using the specified method
|
93
|
+
def window_id
|
94
|
+
element.getWindowID
|
95
|
+
end
|
96
|
+
|
97
|
+
alias_method :id, :window_id
|
98
|
+
|
99
|
+
######################################################################
|
100
|
+
# Prints out all of the internal information about the window. Used
|
101
|
+
# to discover the names of widgets and windows to use in the tests
|
102
|
+
#
|
103
|
+
# @raise [Exceptions::UnknownObjectException] if the widget could not be found
|
104
|
+
# using the specified method
|
105
|
+
def print_window_info
|
106
|
+
puts " Name: " + name
|
107
|
+
puts " Title: " + title
|
108
|
+
puts " ID: " + id.to_s
|
109
|
+
puts " Type: " + type.to_s
|
110
|
+
puts "OnScreen: " + on_screen?.to_s
|
111
|
+
puts " Pos: x=" + element.getRect().x.to_s + ", y=" + element.getRect().y.to_s
|
112
|
+
puts " Size: width=" + element.getRect().width.to_s + ", height=" + element.getRect().height.to_s
|
113
|
+
puts ""
|
114
|
+
end
|
115
|
+
|
116
|
+
# @private
|
117
|
+
def driver
|
118
|
+
@container.driver
|
119
|
+
end
|
120
|
+
|
121
|
+
private
|
122
|
+
|
123
|
+
# Gets the parent widget name of which there is none here
|
124
|
+
def parent_widget
|
125
|
+
nil
|
126
|
+
end
|
127
|
+
|
128
|
+
# Return the element
|
129
|
+
def element(refresh = false)
|
130
|
+
if (@elm == nil || refresh == true)
|
131
|
+
@elm = find
|
132
|
+
end
|
133
|
+
|
134
|
+
raise(Exceptions::UnknownObjectException, "Window #{@selector} not found using #{@method}") unless @elm
|
135
|
+
@elm
|
136
|
+
end
|
137
|
+
|
138
|
+
# Finds the element on the page.
|
139
|
+
def find
|
140
|
+
case @method
|
141
|
+
when :name
|
142
|
+
@element = driver.findWindowByName(@selector)
|
143
|
+
when :id
|
144
|
+
@element = driver.findWindowById(@selector)
|
145
|
+
end
|
146
|
+
raise(Exceptions::UnknownObjectException, "Window #{@selector} not found using #{@method}") unless @element
|
147
|
+
@element
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|