oki-celerity 0.8.1.dev
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/HISTORY +111 -0
- data/LICENSE +621 -0
- data/README.rdoc +80 -0
- data/Rakefile +11 -0
- data/VERSION.yml +5 -0
- data/celerity.gemspec +126 -0
- data/lib/celerity/browser.rb +908 -0
- data/lib/celerity/clickable_element.rb +73 -0
- data/lib/celerity/collections.rb +164 -0
- data/lib/celerity/container.rb +800 -0
- data/lib/celerity/default_viewer.rb +14 -0
- data/lib/celerity/disabled_element.rb +40 -0
- data/lib/celerity/element.rb +311 -0
- data/lib/celerity/element_collection.rb +107 -0
- data/lib/celerity/element_locator.rb +164 -0
- data/lib/celerity/elements/button.rb +54 -0
- data/lib/celerity/elements/file_field.rb +29 -0
- data/lib/celerity/elements/form.rb +22 -0
- data/lib/celerity/elements/frame.rb +86 -0
- data/lib/celerity/elements/image.rb +89 -0
- data/lib/celerity/elements/label.rb +16 -0
- data/lib/celerity/elements/link.rb +43 -0
- data/lib/celerity/elements/meta.rb +14 -0
- data/lib/celerity/elements/non_control_elements.rb +124 -0
- data/lib/celerity/elements/option.rb +38 -0
- data/lib/celerity/elements/radio_check.rb +114 -0
- data/lib/celerity/elements/select_list.rb +146 -0
- data/lib/celerity/elements/table.rb +153 -0
- data/lib/celerity/elements/table_cell.rb +36 -0
- data/lib/celerity/elements/table_elements.rb +42 -0
- data/lib/celerity/elements/table_row.rb +49 -0
- data/lib/celerity/elements/text_field.rb +168 -0
- data/lib/celerity/exception.rb +83 -0
- data/lib/celerity/htmlunit/apache-mime4j-0.6.jar +0 -0
- data/lib/celerity/htmlunit/commons-codec-1.4.jar +0 -0
- data/lib/celerity/htmlunit/commons-collections-3.2.1.jar +0 -0
- data/lib/celerity/htmlunit/commons-io-1.4.jar +0 -0
- data/lib/celerity/htmlunit/commons-lang-2.5.jar +0 -0
- data/lib/celerity/htmlunit/commons-logging-1.1.1.jar +0 -0
- data/lib/celerity/htmlunit/cssparser-0.9.5.jar +0 -0
- data/lib/celerity/htmlunit/htmlunit-2.9-SNAPSHOT.jar +0 -0
- data/lib/celerity/htmlunit/htmlunit-core-js-2.8.jar +0 -0
- data/lib/celerity/htmlunit/httpclient-4.0.1.jar +0 -0
- data/lib/celerity/htmlunit/httpcore-4.0.1.jar +0 -0
- data/lib/celerity/htmlunit/httpmime-4.0.1.jar +0 -0
- data/lib/celerity/htmlunit/nekohtml-1.9.14.jar +0 -0
- data/lib/celerity/htmlunit/sac-1.3.jar +0 -0
- data/lib/celerity/htmlunit/serializer-2.7.1.jar +0 -0
- data/lib/celerity/htmlunit/xalan-2.7.1.jar +0 -0
- data/lib/celerity/htmlunit/xercesImpl-2.9.1.jar +0 -0
- data/lib/celerity/htmlunit/xml-apis-1.3.04.jar +0 -0
- data/lib/celerity/htmlunit.rb +64 -0
- data/lib/celerity/identifier.rb +28 -0
- data/lib/celerity/ignoring_web_connection.rb +15 -0
- data/lib/celerity/input_element.rb +25 -0
- data/lib/celerity/javascript_debugger.rb +32 -0
- data/lib/celerity/listener.rb +143 -0
- data/lib/celerity/resources/no_viewer.png +0 -0
- data/lib/celerity/short_inspect.rb +20 -0
- data/lib/celerity/util.rb +129 -0
- data/lib/celerity/version.rb +3 -0
- data/lib/celerity/viewer_connection.rb +89 -0
- data/lib/celerity/watir_compatibility.rb +70 -0
- data/lib/celerity/xpath_support.rb +52 -0
- data/lib/celerity.rb +77 -0
- data/tasks/benchmark.rake +4 -0
- data/tasks/check.rake +24 -0
- data/tasks/clean.rake +3 -0
- data/tasks/fix.rake +25 -0
- data/tasks/jar.rake +55 -0
- data/tasks/jeweler.rake +28 -0
- data/tasks/rdoc.rake +4 -0
- data/tasks/snapshot.rake +25 -0
- data/tasks/spec.rake +26 -0
- data/tasks/website.rake +10 -0
- data/tasks/yard.rake +16 -0
- metadata +204 -0
@@ -0,0 +1,800 @@
|
|
1
|
+
module Celerity
|
2
|
+
|
3
|
+
#
|
4
|
+
# This class contains methods for accessing elements inside a container,
|
5
|
+
# usually the Browser object, meaning the current page.
|
6
|
+
# The most common syntax is
|
7
|
+
# browser.elem(:attribute, 'value')
|
8
|
+
#
|
9
|
+
# Note that the element is located lazily, so no exceptions will be raised
|
10
|
+
# if the element doesn't exist until you call a method on the resulting object.
|
11
|
+
# To do this you would normally use Element#exists? or an action method,
|
12
|
+
# like ClickableElement#click.
|
13
|
+
# You can also pass in a hash:
|
14
|
+
#
|
15
|
+
# browser.link(:index => 1).click
|
16
|
+
#
|
17
|
+
# All elements support multiple attributes identification using the
|
18
|
+
# hash syntax (though this might not always be compatible with Watir):
|
19
|
+
#
|
20
|
+
# browser.span(:class_name => 'product', :index => 5).text
|
21
|
+
#
|
22
|
+
# Checkboxes and radio buttons support a special three-argument syntax:
|
23
|
+
#
|
24
|
+
# browser.check_box(:name, 'a_name', '1234').set
|
25
|
+
#
|
26
|
+
# You can also get all the elements of a certain type by using the plural form (@see Celerity::ElementCollection):
|
27
|
+
#
|
28
|
+
# browser.links # => #<Celerity::Links:0x7a1c2da2 ...>
|
29
|
+
#
|
30
|
+
|
31
|
+
module Container
|
32
|
+
include Celerity::Exception
|
33
|
+
include Celerity::ShortInspect
|
34
|
+
|
35
|
+
# Points back to the Browser instance that contains this element
|
36
|
+
attr_reader :browser
|
37
|
+
|
38
|
+
#
|
39
|
+
# Check if the element contains the given text.
|
40
|
+
#
|
41
|
+
# @param [String, Regexp] expected_text The text to look for.
|
42
|
+
# @return [Fixnum, nil] The index of the matched text, or nil if it doesn't match.
|
43
|
+
#
|
44
|
+
|
45
|
+
def contains_text(expected_text)
|
46
|
+
assert_exists
|
47
|
+
return nil unless respond_to? :text
|
48
|
+
|
49
|
+
case expected_text
|
50
|
+
when Regexp
|
51
|
+
text() =~ expected_text
|
52
|
+
when String
|
53
|
+
text().index(expected_text)
|
54
|
+
else
|
55
|
+
raise TypeError, "expected String or Regexp, got #{expected_text.inspect}:#{expected_text.class}"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
#
|
60
|
+
# Override inspect for readability
|
61
|
+
#
|
62
|
+
|
63
|
+
def inspect
|
64
|
+
short_inspect :include => %w[@conditions @object]
|
65
|
+
end
|
66
|
+
|
67
|
+
#
|
68
|
+
# Used internally to update the container object.
|
69
|
+
# @api private
|
70
|
+
#
|
71
|
+
|
72
|
+
def container=(container)
|
73
|
+
@container = container
|
74
|
+
@browser = container.browser
|
75
|
+
container
|
76
|
+
end
|
77
|
+
|
78
|
+
#--
|
79
|
+
# below methods sorted alphabetically
|
80
|
+
#++
|
81
|
+
|
82
|
+
#
|
83
|
+
# @return [Celerity::Area]
|
84
|
+
#
|
85
|
+
|
86
|
+
def area(*args)
|
87
|
+
Area.new(self, *args)
|
88
|
+
end
|
89
|
+
|
90
|
+
#
|
91
|
+
# @return [Celerity::Areas]
|
92
|
+
#
|
93
|
+
|
94
|
+
def areas
|
95
|
+
Areas.new(self)
|
96
|
+
end
|
97
|
+
|
98
|
+
#
|
99
|
+
# @return [Celerity::Button]
|
100
|
+
#
|
101
|
+
|
102
|
+
def button(*args)
|
103
|
+
Button.new(self, *args)
|
104
|
+
end
|
105
|
+
|
106
|
+
#
|
107
|
+
# @return [Celerity::Buttons]
|
108
|
+
#
|
109
|
+
|
110
|
+
def buttons
|
111
|
+
Buttons.new(self)
|
112
|
+
end
|
113
|
+
|
114
|
+
#
|
115
|
+
# @return [Celerity::TableCell]
|
116
|
+
#
|
117
|
+
|
118
|
+
def cell(*args)
|
119
|
+
TableCell.new(self, *args)
|
120
|
+
end
|
121
|
+
alias_method :td, :cell
|
122
|
+
|
123
|
+
#
|
124
|
+
# @return [Celerity::TableCells]
|
125
|
+
#
|
126
|
+
|
127
|
+
def cells
|
128
|
+
TableCells.new(self)
|
129
|
+
end
|
130
|
+
alias_method :tds, :cells
|
131
|
+
|
132
|
+
#
|
133
|
+
# Since finding checkboxes by value is very common, you can use this shorthand:
|
134
|
+
#
|
135
|
+
# browser.check_box(:name, 'a_name', '1234').set
|
136
|
+
#
|
137
|
+
# or
|
138
|
+
#
|
139
|
+
# browser.check_box(:name => 'a_name', :value => '1234').set
|
140
|
+
#
|
141
|
+
# @return [Celerity::CheckBox]
|
142
|
+
#
|
143
|
+
|
144
|
+
def check_box(*args)
|
145
|
+
CheckBox.new(self, *args)
|
146
|
+
end
|
147
|
+
|
148
|
+
#
|
149
|
+
# @return [Celerity::CheckBoxes]
|
150
|
+
#
|
151
|
+
|
152
|
+
def checkboxes
|
153
|
+
CheckBoxes.new(self)
|
154
|
+
end
|
155
|
+
|
156
|
+
#
|
157
|
+
# @return [Celerity::Dd]
|
158
|
+
#
|
159
|
+
|
160
|
+
def dd(*args)
|
161
|
+
Dd.new(self, *args)
|
162
|
+
end
|
163
|
+
|
164
|
+
#
|
165
|
+
# @return [Celerity::Dds]
|
166
|
+
#
|
167
|
+
|
168
|
+
def dds
|
169
|
+
Dds.new(self)
|
170
|
+
end
|
171
|
+
|
172
|
+
#
|
173
|
+
# @return [Celerity::Del]
|
174
|
+
#
|
175
|
+
|
176
|
+
def del(*args)
|
177
|
+
Del.new(self, *args)
|
178
|
+
end
|
179
|
+
|
180
|
+
#
|
181
|
+
# @return [Celerity::Dels]
|
182
|
+
#
|
183
|
+
|
184
|
+
def dels
|
185
|
+
Dels.new(self)
|
186
|
+
end
|
187
|
+
|
188
|
+
#
|
189
|
+
# @return [Celerity::Div]
|
190
|
+
#
|
191
|
+
|
192
|
+
def div(*args)
|
193
|
+
Div.new(self, *args)
|
194
|
+
end
|
195
|
+
|
196
|
+
#
|
197
|
+
# @return [Celerity::Divs]
|
198
|
+
#
|
199
|
+
|
200
|
+
def divs
|
201
|
+
Divs.new(self)
|
202
|
+
end
|
203
|
+
|
204
|
+
#
|
205
|
+
# @return [Celerity::Dl]
|
206
|
+
#
|
207
|
+
|
208
|
+
def dl(*args)
|
209
|
+
Dl.new(self, *args)
|
210
|
+
end
|
211
|
+
|
212
|
+
#
|
213
|
+
# @return [Celerity::Dls]
|
214
|
+
#
|
215
|
+
|
216
|
+
def dls
|
217
|
+
Dls.new(self)
|
218
|
+
end
|
219
|
+
|
220
|
+
#
|
221
|
+
# @return [Celerity::Dt]
|
222
|
+
#
|
223
|
+
|
224
|
+
def dt(*args)
|
225
|
+
Dt.new(self, *args)
|
226
|
+
end
|
227
|
+
|
228
|
+
#
|
229
|
+
# @return [Celerity::Dts]
|
230
|
+
#
|
231
|
+
|
232
|
+
def dts
|
233
|
+
Dts.new(self)
|
234
|
+
end
|
235
|
+
|
236
|
+
#
|
237
|
+
# @return [Celerity::Em]
|
238
|
+
#
|
239
|
+
|
240
|
+
def em(*args)
|
241
|
+
Em.new(self, *args)
|
242
|
+
end
|
243
|
+
|
244
|
+
#
|
245
|
+
# @return [Celerity::Ems]
|
246
|
+
#
|
247
|
+
|
248
|
+
def ems
|
249
|
+
Ems.new(self)
|
250
|
+
end
|
251
|
+
|
252
|
+
#
|
253
|
+
# @return [Celerity::FileField]
|
254
|
+
#
|
255
|
+
|
256
|
+
def file_field(*args)
|
257
|
+
FileField.new(self, *args)
|
258
|
+
end
|
259
|
+
|
260
|
+
#
|
261
|
+
# @return [Celerity::FileFields]
|
262
|
+
#
|
263
|
+
|
264
|
+
def file_fields
|
265
|
+
FileFields.new(self)
|
266
|
+
end
|
267
|
+
|
268
|
+
#
|
269
|
+
# @return [Celerity::Form]
|
270
|
+
#
|
271
|
+
|
272
|
+
def form(*args)
|
273
|
+
Form.new(self, *args)
|
274
|
+
end
|
275
|
+
|
276
|
+
#
|
277
|
+
# @return [Celerity::Forms]
|
278
|
+
#
|
279
|
+
|
280
|
+
def forms
|
281
|
+
Forms.new(self)
|
282
|
+
end
|
283
|
+
|
284
|
+
#
|
285
|
+
# @return [Celerity::Frame]
|
286
|
+
#
|
287
|
+
|
288
|
+
def frame(*args)
|
289
|
+
Frame.new(self, *args)
|
290
|
+
end
|
291
|
+
|
292
|
+
#
|
293
|
+
# @return [Celerity::Frames]
|
294
|
+
#
|
295
|
+
|
296
|
+
def frames
|
297
|
+
Frames.new(self)
|
298
|
+
end
|
299
|
+
|
300
|
+
#
|
301
|
+
# @return [Celerity::H1]
|
302
|
+
#
|
303
|
+
|
304
|
+
def h1(*args)
|
305
|
+
H1.new(self, *args)
|
306
|
+
end
|
307
|
+
|
308
|
+
#
|
309
|
+
# @return [Celerity::H1s]
|
310
|
+
#
|
311
|
+
|
312
|
+
def h1s
|
313
|
+
H1s.new(self)
|
314
|
+
end
|
315
|
+
|
316
|
+
#
|
317
|
+
# @return [Celerity::H2]
|
318
|
+
#
|
319
|
+
|
320
|
+
def h2(*args)
|
321
|
+
H2.new(self, *args)
|
322
|
+
end
|
323
|
+
|
324
|
+
#
|
325
|
+
# @return [Celerity::H2s]
|
326
|
+
#
|
327
|
+
|
328
|
+
def h2s
|
329
|
+
H2s.new(self)
|
330
|
+
end
|
331
|
+
|
332
|
+
#
|
333
|
+
# @return [Celerity::H3]
|
334
|
+
#
|
335
|
+
|
336
|
+
def h3(*args)
|
337
|
+
H3.new(self, *args)
|
338
|
+
end
|
339
|
+
|
340
|
+
#
|
341
|
+
# @return [Celerity::H3s]
|
342
|
+
#
|
343
|
+
|
344
|
+
def h3s
|
345
|
+
H3s.new(self)
|
346
|
+
end
|
347
|
+
|
348
|
+
#
|
349
|
+
# @return [Celerity::H4]
|
350
|
+
#
|
351
|
+
|
352
|
+
def h4(*args)
|
353
|
+
H4.new(self, *args)
|
354
|
+
end
|
355
|
+
|
356
|
+
#
|
357
|
+
# @return [Celerity::H4s]
|
358
|
+
#
|
359
|
+
|
360
|
+
def h4s
|
361
|
+
H4s.new(self)
|
362
|
+
end
|
363
|
+
|
364
|
+
#
|
365
|
+
# @return [Celerity::H5]
|
366
|
+
#
|
367
|
+
|
368
|
+
def h5(*args)
|
369
|
+
H5.new(self, *args)
|
370
|
+
end
|
371
|
+
|
372
|
+
#
|
373
|
+
# @return [Celerity::H5s]
|
374
|
+
#
|
375
|
+
|
376
|
+
def h5s
|
377
|
+
H5s.new(self)
|
378
|
+
end
|
379
|
+
|
380
|
+
#
|
381
|
+
# @return [Celerity::H6]
|
382
|
+
#
|
383
|
+
|
384
|
+
def h6(*args)
|
385
|
+
H6.new(self, *args)
|
386
|
+
end
|
387
|
+
|
388
|
+
#
|
389
|
+
# @return [Celerity::H6s]
|
390
|
+
#
|
391
|
+
|
392
|
+
def h6s
|
393
|
+
H6s.new(self)
|
394
|
+
end
|
395
|
+
|
396
|
+
#
|
397
|
+
# @return [Celerity::Hidden]
|
398
|
+
#
|
399
|
+
|
400
|
+
def hidden(*args)
|
401
|
+
Hidden.new(self, *args)
|
402
|
+
end
|
403
|
+
|
404
|
+
#
|
405
|
+
# @return [Celerity::Hiddens]
|
406
|
+
#
|
407
|
+
|
408
|
+
def hiddens
|
409
|
+
Hiddens.new(self)
|
410
|
+
end
|
411
|
+
|
412
|
+
#
|
413
|
+
# @return [Celerity::Ins]
|
414
|
+
#
|
415
|
+
|
416
|
+
def ins(*args)
|
417
|
+
Ins.new(self, *args)
|
418
|
+
end
|
419
|
+
|
420
|
+
#
|
421
|
+
# @return [Celerity::Inses]
|
422
|
+
#
|
423
|
+
|
424
|
+
def inses(*args)
|
425
|
+
Inses.new(self, *args)
|
426
|
+
end
|
427
|
+
|
428
|
+
|
429
|
+
#
|
430
|
+
# @return [Celerity::Image]
|
431
|
+
#
|
432
|
+
|
433
|
+
def image(*args)
|
434
|
+
Image.new(self, *args)
|
435
|
+
end
|
436
|
+
|
437
|
+
#
|
438
|
+
# @return [Celerity::Images]
|
439
|
+
#
|
440
|
+
|
441
|
+
def images
|
442
|
+
Images.new(self)
|
443
|
+
end
|
444
|
+
|
445
|
+
#
|
446
|
+
# @return [Celerity::Label]
|
447
|
+
#
|
448
|
+
|
449
|
+
def label(*args)
|
450
|
+
Label.new(self, *args)
|
451
|
+
end
|
452
|
+
|
453
|
+
#
|
454
|
+
# @return [Celerity::Labels]
|
455
|
+
#
|
456
|
+
|
457
|
+
def labels
|
458
|
+
Labels.new(self)
|
459
|
+
end
|
460
|
+
|
461
|
+
#
|
462
|
+
# @return [Celerity::Li]
|
463
|
+
#
|
464
|
+
|
465
|
+
def li(*args)
|
466
|
+
Li.new(self, *args)
|
467
|
+
end
|
468
|
+
|
469
|
+
#
|
470
|
+
# @return [Celerity::Lis]
|
471
|
+
#
|
472
|
+
|
473
|
+
def lis
|
474
|
+
Lis.new(self)
|
475
|
+
end
|
476
|
+
|
477
|
+
#
|
478
|
+
# @return [Celerity::Link]
|
479
|
+
#
|
480
|
+
|
481
|
+
def link(*args)
|
482
|
+
Link.new(self, *args)
|
483
|
+
end
|
484
|
+
|
485
|
+
#
|
486
|
+
# @return [Celerity::Links]
|
487
|
+
#
|
488
|
+
|
489
|
+
def links
|
490
|
+
Links.new(self)
|
491
|
+
end
|
492
|
+
|
493
|
+
#
|
494
|
+
# @return [Celerity::Map]
|
495
|
+
#
|
496
|
+
|
497
|
+
def map(*args)
|
498
|
+
Map.new(self, *args)
|
499
|
+
end
|
500
|
+
|
501
|
+
#
|
502
|
+
# @return [Celerity::Maps]
|
503
|
+
#
|
504
|
+
|
505
|
+
def maps
|
506
|
+
Maps.new(self)
|
507
|
+
end
|
508
|
+
|
509
|
+
#
|
510
|
+
# @return [Celerity::Meta]
|
511
|
+
#
|
512
|
+
|
513
|
+
def meta(*args)
|
514
|
+
Meta.new(self, *args)
|
515
|
+
end
|
516
|
+
|
517
|
+
#
|
518
|
+
# @return [Celerity::Metas]
|
519
|
+
#
|
520
|
+
|
521
|
+
def metas(*args)
|
522
|
+
Metas.new(self, *args)
|
523
|
+
end
|
524
|
+
|
525
|
+
#
|
526
|
+
# @return [Celerity::Ol]
|
527
|
+
#
|
528
|
+
|
529
|
+
def ol(*args)
|
530
|
+
Ol.new(self, *args)
|
531
|
+
end
|
532
|
+
|
533
|
+
#
|
534
|
+
# @return [Celerity::Ols]
|
535
|
+
#
|
536
|
+
|
537
|
+
def ols
|
538
|
+
Ols.new(self)
|
539
|
+
end
|
540
|
+
|
541
|
+
#
|
542
|
+
# @return [Celerity::Option]
|
543
|
+
#
|
544
|
+
|
545
|
+
def option(*args)
|
546
|
+
Option.new(self, *args)
|
547
|
+
end
|
548
|
+
|
549
|
+
#
|
550
|
+
# @return [Celerity::P]
|
551
|
+
#
|
552
|
+
|
553
|
+
def p(*args)
|
554
|
+
P.new(self, *args)
|
555
|
+
end
|
556
|
+
|
557
|
+
#
|
558
|
+
# @return [Celerity::Ps]
|
559
|
+
#
|
560
|
+
|
561
|
+
def ps
|
562
|
+
Ps.new(self)
|
563
|
+
end
|
564
|
+
|
565
|
+
#
|
566
|
+
# @return [Celerity::Pre]
|
567
|
+
#
|
568
|
+
|
569
|
+
def pre(*args)
|
570
|
+
Pre.new(self, *args)
|
571
|
+
end
|
572
|
+
|
573
|
+
#
|
574
|
+
# @return [Celerity::Pres]
|
575
|
+
#
|
576
|
+
|
577
|
+
def pres
|
578
|
+
Pres.new(self)
|
579
|
+
end
|
580
|
+
|
581
|
+
#
|
582
|
+
# Since finding radios by value is very common, you can use this shorthand:
|
583
|
+
#
|
584
|
+
# browser.radio(:name, 'a_name', '1234').set
|
585
|
+
#
|
586
|
+
# or
|
587
|
+
#
|
588
|
+
# browser.radio(:name => 'a_name', :value => '1234').set
|
589
|
+
#
|
590
|
+
# @return [Celerity::Radio]
|
591
|
+
#
|
592
|
+
|
593
|
+
def radio(*args)
|
594
|
+
Radio.new(self, *args)
|
595
|
+
end
|
596
|
+
|
597
|
+
#
|
598
|
+
# @return [Celerity::Radios]
|
599
|
+
#
|
600
|
+
|
601
|
+
def radios
|
602
|
+
Radios.new(self)
|
603
|
+
end
|
604
|
+
|
605
|
+
#
|
606
|
+
# @return [Celerity::TableRow]
|
607
|
+
#
|
608
|
+
|
609
|
+
def row(*args)
|
610
|
+
TableRow.new(self, *args)
|
611
|
+
end
|
612
|
+
|
613
|
+
#
|
614
|
+
# @return [Celerity::TableRows]
|
615
|
+
#
|
616
|
+
|
617
|
+
def rows
|
618
|
+
TableRows.new(self)
|
619
|
+
end
|
620
|
+
|
621
|
+
#
|
622
|
+
# @return [Celerity::SelectList]
|
623
|
+
#
|
624
|
+
|
625
|
+
def select_list(*args)
|
626
|
+
SelectList.new(self, *args)
|
627
|
+
end
|
628
|
+
|
629
|
+
#
|
630
|
+
# @return [Celerity::SelectLists]
|
631
|
+
#
|
632
|
+
|
633
|
+
def select_lists
|
634
|
+
SelectLists.new(self)
|
635
|
+
end
|
636
|
+
|
637
|
+
#
|
638
|
+
# @return [Celerity::Span]
|
639
|
+
#
|
640
|
+
|
641
|
+
def span(*args)
|
642
|
+
Span.new(self, *args)
|
643
|
+
end
|
644
|
+
|
645
|
+
#
|
646
|
+
# @return [Celerity::Spans]
|
647
|
+
#
|
648
|
+
|
649
|
+
def spans
|
650
|
+
Spans.new(self)
|
651
|
+
end
|
652
|
+
|
653
|
+
#
|
654
|
+
# @return [Celerity::Spans]
|
655
|
+
#
|
656
|
+
|
657
|
+
def strong(*args)
|
658
|
+
Strong.new(self, *args)
|
659
|
+
end
|
660
|
+
|
661
|
+
#
|
662
|
+
# @return [Celerity::Strongs]
|
663
|
+
#
|
664
|
+
|
665
|
+
def strongs
|
666
|
+
Strongs.new(self)
|
667
|
+
end
|
668
|
+
|
669
|
+
#
|
670
|
+
# @return [Celerity::Table]
|
671
|
+
#
|
672
|
+
|
673
|
+
def table(*args)
|
674
|
+
Table.new(self, *args)
|
675
|
+
end
|
676
|
+
|
677
|
+
#
|
678
|
+
# @return [Celerity::Tables]
|
679
|
+
#
|
680
|
+
|
681
|
+
def tables
|
682
|
+
Tables.new(self)
|
683
|
+
end
|
684
|
+
|
685
|
+
#
|
686
|
+
# @return [Celerity::TableBody]
|
687
|
+
#
|
688
|
+
|
689
|
+
def tbody(*args)
|
690
|
+
TableBody.new(self, *args)
|
691
|
+
end
|
692
|
+
|
693
|
+
#
|
694
|
+
# @return [Celerity::TableBodies]
|
695
|
+
#
|
696
|
+
|
697
|
+
def tbodies
|
698
|
+
TableBodies.new(self)
|
699
|
+
end
|
700
|
+
|
701
|
+
#
|
702
|
+
# @return [Celerity::TextField]
|
703
|
+
#
|
704
|
+
|
705
|
+
def text_field(*args)
|
706
|
+
TextField.new(self, *args)
|
707
|
+
end
|
708
|
+
|
709
|
+
#
|
710
|
+
# @return [Celerity::TextFields]
|
711
|
+
#
|
712
|
+
|
713
|
+
def text_fields
|
714
|
+
TextFields.new(self)
|
715
|
+
end
|
716
|
+
|
717
|
+
#
|
718
|
+
# @return [Celerity::TableFooter]
|
719
|
+
#
|
720
|
+
|
721
|
+
def tfoot(*args)
|
722
|
+
TableFooter.new(self, *args)
|
723
|
+
end
|
724
|
+
|
725
|
+
#
|
726
|
+
# @return [Celerity::TableFooters]
|
727
|
+
#
|
728
|
+
|
729
|
+
def tfoots
|
730
|
+
TableFooters.new(self)
|
731
|
+
end
|
732
|
+
alias_method :tfeet, :tfoots # :-)
|
733
|
+
|
734
|
+
#
|
735
|
+
# Watir's cells() won't find <th> elements.
|
736
|
+
# This is a workaround.
|
737
|
+
#
|
738
|
+
# @return [Celerity::Th]
|
739
|
+
#
|
740
|
+
|
741
|
+
def th(*args)
|
742
|
+
Th.new(self, *args)
|
743
|
+
end
|
744
|
+
|
745
|
+
#
|
746
|
+
# FIXME: implement or change api,
|
747
|
+
# @see th
|
748
|
+
#
|
749
|
+
|
750
|
+
def ths
|
751
|
+
raise NotImplementedError
|
752
|
+
end
|
753
|
+
|
754
|
+
#
|
755
|
+
# @return [Celerity::TableHeader]
|
756
|
+
#
|
757
|
+
|
758
|
+
def thead(*args)
|
759
|
+
TableHeader.new(self, *args)
|
760
|
+
end
|
761
|
+
|
762
|
+
#
|
763
|
+
# @return [Celerity::TableHeaders]
|
764
|
+
#
|
765
|
+
|
766
|
+
def theads
|
767
|
+
TableHeaders.new(self)
|
768
|
+
end
|
769
|
+
|
770
|
+
#
|
771
|
+
# @return [Celerity::Ul]
|
772
|
+
#
|
773
|
+
|
774
|
+
def ul(*args)
|
775
|
+
Ul.new(self, *args)
|
776
|
+
end
|
777
|
+
|
778
|
+
#
|
779
|
+
# @return [Celerity::Uls]
|
780
|
+
#
|
781
|
+
|
782
|
+
def uls
|
783
|
+
Uls.new(self)
|
784
|
+
end
|
785
|
+
|
786
|
+
private
|
787
|
+
|
788
|
+
#
|
789
|
+
# Rescues HtmlUnit::FailingHttpStatusCodeException and re-raises as
|
790
|
+
# Celerity::NavigationException to avoid the huge JRuby backtrace
|
791
|
+
#
|
792
|
+
|
793
|
+
def rescue_status_code_exception(&blk)
|
794
|
+
yield
|
795
|
+
rescue HtmlUnit::FailingHttpStatusCodeException => e
|
796
|
+
raise NavigationException, e.message, caller
|
797
|
+
end
|
798
|
+
|
799
|
+
end # Container
|
800
|
+
end # Celerity
|