watir-webdriver 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -2
  3. data/.travis.yml +2 -3
  4. data/CHANGES.md +10 -1
  5. data/Gemfile +1 -1
  6. data/README.md +22 -17
  7. data/Rakefile +55 -52
  8. data/lib/watir-webdriver.rb +3 -2
  9. data/lib/watir-webdriver/alert.rb +0 -1
  10. data/lib/watir-webdriver/atoms/README +1 -1
  11. data/lib/watir-webdriver/browser.rb +4 -5
  12. data/lib/watir-webdriver/cell_container.rb +2 -2
  13. data/lib/watir-webdriver/container.rb +2 -3
  14. data/lib/watir-webdriver/cookies.rb +8 -8
  15. data/lib/watir-webdriver/element_collection.rb +3 -4
  16. data/lib/watir-webdriver/elements/area.rb +0 -1
  17. data/lib/watir-webdriver/elements/button.rb +0 -1
  18. data/lib/watir-webdriver/elements/checkbox.rb +2 -4
  19. data/lib/watir-webdriver/elements/element.rb +69 -45
  20. data/lib/watir-webdriver/elements/file_field.rb +2 -3
  21. data/lib/watir-webdriver/elements/font.rb +2 -2
  22. data/lib/watir-webdriver/elements/form.rb +0 -1
  23. data/lib/watir-webdriver/elements/hidden.rb +2 -3
  24. data/lib/watir-webdriver/elements/html_elements.rb +2282 -0
  25. data/lib/watir-webdriver/elements/iframe.rb +6 -7
  26. data/lib/watir-webdriver/elements/image.rb +0 -1
  27. data/lib/watir-webdriver/elements/input.rb +0 -1
  28. data/lib/watir-webdriver/elements/link.rb +0 -1
  29. data/lib/watir-webdriver/elements/option.rb +3 -4
  30. data/lib/watir-webdriver/elements/radio.rb +2 -3
  31. data/lib/watir-webdriver/elements/select.rb +0 -1
  32. data/lib/watir-webdriver/elements/svg_elements.rb +787 -0
  33. data/lib/watir-webdriver/elements/table.rb +0 -2
  34. data/lib/watir-webdriver/elements/table_section.rb +1 -1
  35. data/lib/watir-webdriver/elements/text_field.rb +2 -3
  36. data/lib/watir-webdriver/exception.rb +0 -2
  37. data/lib/watir-webdriver/extensions/nokogiri.rb +1 -1
  38. data/lib/watir-webdriver/generator.rb +3 -0
  39. data/lib/watir-webdriver/generator/base.rb +11 -0
  40. data/lib/watir-webdriver/{html → generator/base}/generator.rb +23 -33
  41. data/lib/watir-webdriver/{html → generator/base}/idl_sorter.rb +3 -5
  42. data/lib/watir-webdriver/{html → generator/base}/spec_extractor.rb +15 -41
  43. data/lib/watir-webdriver/generator/base/util.rb +21 -0
  44. data/lib/watir-webdriver/{html → generator/base}/visitor.rb +15 -15
  45. data/lib/watir-webdriver/{html.rb → generator/html.rb} +3 -11
  46. data/lib/watir-webdriver/generator/html/generator.rb +36 -0
  47. data/lib/watir-webdriver/generator/html/spec_extractor.rb +50 -0
  48. data/lib/watir-webdriver/generator/html/visitor.rb +21 -0
  49. data/lib/watir-webdriver/generator/svg.rb +7 -0
  50. data/lib/watir-webdriver/generator/svg/generator.rb +38 -0
  51. data/lib/watir-webdriver/generator/svg/spec_extractor.rb +46 -0
  52. data/lib/watir-webdriver/generator/svg/visitor.rb +21 -0
  53. data/lib/watir-webdriver/has_window.rb +3 -3
  54. data/lib/watir-webdriver/locators/button_locator.rb +7 -2
  55. data/lib/watir-webdriver/locators/child_cell_locator.rb +1 -1
  56. data/lib/watir-webdriver/locators/child_row_locator.rb +1 -1
  57. data/lib/watir-webdriver/locators/element_locator.rb +44 -9
  58. data/lib/watir-webdriver/locators/text_area_locator.rb +4 -0
  59. data/lib/watir-webdriver/locators/text_field_locator.rb +7 -2
  60. data/lib/watir-webdriver/screenshot.rb +0 -1
  61. data/lib/watir-webdriver/version.rb +1 -1
  62. data/lib/watir-webdriver/wait.rb +10 -11
  63. data/lib/watir-webdriver/window.rb +5 -5
  64. data/lib/watir-webdriver/xpath_support.rb +0 -1
  65. data/spec/always_locate_spec.rb +4 -4
  66. data/spec/browser_spec.rb +3 -3
  67. data/spec/click_spec.rb +11 -4
  68. data/spec/container_spec.rb +2 -2
  69. data/spec/element_locator_spec.rb +145 -84
  70. data/spec/element_spec.rb +29 -16
  71. data/spec/html/clicks.html +3 -0
  72. data/spec/html/removed_element.html +7 -0
  73. data/spec/implementation.rb +5 -5
  74. data/spec/input_spec.rb +1 -1
  75. data/spec/spec_helper.rb +1 -2
  76. data/spec/special_chars_spec.rb +2 -2
  77. data/support/doctest_helper.rb +4 -4
  78. data/support/version_differ.rb +2 -2
  79. data/watir-webdriver.gemspec +3 -3
  80. metadata +27 -17
  81. data/lib/watir-webdriver/elements/generated.rb +0 -3106
  82. data/lib/watir-webdriver/html/util.rb +0 -22
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  module Watir
3
2
 
4
3
  #
@@ -17,7 +16,7 @@ module Watir
17
16
  # Yields each element in collection.
18
17
  #
19
18
  # @example
20
- # divs = browser.divs(:class => 'kls')
19
+ # divs = browser.divs(class: 'kls')
21
20
  # divs.each do |div|
22
21
  # puts div.text
23
22
  # end
@@ -51,7 +50,7 @@ module Watir
51
50
  #
52
51
 
53
52
  def [](idx)
54
- to_a[idx] || element_class.new(@parent, @selector.merge(:index => idx))
53
+ to_a[idx] || element_class.new(@parent, @selector.merge(index: idx))
55
54
  end
56
55
 
57
56
  #
@@ -82,7 +81,7 @@ module Watir
82
81
 
83
82
  def to_a
84
83
  # TODO: optimize - lazy element_class instance?
85
- @to_a ||= elements.map { |e| element_class.new(@parent, :element => e) }
84
+ @to_a ||= elements.map { |e| element_class.new(@parent, element: e) }
86
85
  end
87
86
 
88
87
  private
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  module Watir
3
2
  class Area < HTMLElement
4
3
 
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  module Watir
3
2
 
4
3
  #
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module Watir
4
2
  class CheckBox < Input
5
3
 
@@ -42,11 +40,11 @@ module Watir
42
40
 
43
41
  module Container
44
42
  def checkbox(*args)
45
- CheckBox.new(self, extract_selector(args).merge(:tag_name => "input", :type => "checkbox"))
43
+ CheckBox.new(self, extract_selector(args).merge(tag_name: "input", type: "checkbox"))
46
44
  end
47
45
 
48
46
  def checkboxes(*args)
49
- CheckBoxCollection.new(self, extract_selector(args).merge(:tag_name => "input", :type => "checkbox"))
47
+ CheckBoxCollection.new(self, extract_selector(args).merge(tag_name: "input", type: "checkbox"))
50
48
  end
51
49
  end # Container
52
50
 
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module Watir
4
2
 
5
3
  #
@@ -49,8 +47,8 @@ module Watir
49
47
  alias_method :exist?, :exists?
50
48
 
51
49
  def inspect
52
- if @selector.has_key?(:element)
53
- '#<%s:0x%x located=%s selector=%s>' % [self.class, hash*2, !!@element, '{:element=>(webdriver element)}']
50
+ if @selector.key?(:element)
51
+ '#<%s:0x%x located=%s selector=%s>' % [self.class, hash*2, !!@element, '{element: (webdriver element)}']
54
52
  else
55
53
  '#<%s:0x%x located=%s selector=%s>' % [self.class, hash*2, !!@element, selector_string]
56
54
  end
@@ -60,12 +58,12 @@ module Watir
60
58
  # Returns true if two elements are equal.
61
59
  #
62
60
  # @example
63
- # browser.text_field(:name => "new_user_first_name") == browser.text_field(:name => "new_user_first_name")
61
+ # browser.text_field(name: "new_user_first_name") == browser.text_field(name: "new_user_first_name")
64
62
  # #=> true
65
63
  #
66
64
 
67
65
  def ==(other)
68
- other.kind_of?(self.class) && wd == other.wd
66
+ other.is_a?(self.class) && wd == other.wd
69
67
  end
70
68
  alias_method :eql?, :==
71
69
 
@@ -101,13 +99,13 @@ module Watir
101
99
  # and may not work at all.
102
100
  #
103
101
  # @example Click an element
104
- # browser.element(:name => "new_user_button").click
102
+ # browser.element(name: "new_user_button").click
105
103
  #
106
104
  # @example Click an element with shift key pressed
107
- # browser.element(:name => "new_user_button").click(:shift)
105
+ # browser.element(name: "new_user_button").click(:shift)
108
106
  #
109
107
  # @example Click an element with several modifier keys pressed
110
- # browser.element(:name => "new_user_button").click(:shift, :control)
108
+ # browser.element(name: "new_user_button").click(:shift, :control)
111
109
  #
112
110
  # @param [:shift, :alt, :control, :command, :meta] Modifier key(s) to press while clicking.
113
111
  #
@@ -139,7 +137,7 @@ module Watir
139
137
  # Note that browser support may vary.
140
138
  #
141
139
  # @example
142
- # browser.element(:name => "new_user_button").double_click
140
+ # browser.element(name: "new_user_button").double_click
143
141
  #
144
142
 
145
143
  def double_click
@@ -155,7 +153,7 @@ module Watir
155
153
  # Note that browser support may vary.
156
154
  #
157
155
  # @example
158
- # browser.element(:name => "new_user_button").right_click
156
+ # browser.element(name: "new_user_button").right_click
159
157
  #
160
158
 
161
159
  def right_click
@@ -171,7 +169,7 @@ module Watir
171
169
  # Note that browser support may vary.
172
170
  #
173
171
  # @example
174
- # browser.element(:name => "new_user_button").hover
172
+ # browser.element(name: "new_user_button").hover
175
173
  #
176
174
 
177
175
  def hover
@@ -186,8 +184,8 @@ module Watir
186
184
  # Note that browser support may vary.
187
185
  #
188
186
  # @example
189
- # a = browser.div(:id => "draggable")
190
- # b = browser.div(:id => "droppable")
187
+ # a = browser.div(id: "draggable")
188
+ # b = browser.div(id: "droppable")
191
189
  # a.drag_and_drop_on b
192
190
  #
193
191
 
@@ -208,7 +206,7 @@ module Watir
208
206
  # Note that browser support may vary.
209
207
  #
210
208
  # @example
211
- # browser.div(:id => "draggable").drag_and_drop_by 100, -200
209
+ # browser.div(id: "draggable").drag_and_drop_by 100, -200
212
210
  #
213
211
  # @param [Fixnum] right_by
214
212
  # @param [Fixnum] down_by
@@ -229,7 +227,7 @@ module Watir
229
227
  # Flashes (change background color far a moment) element.
230
228
  #
231
229
  # @example
232
- # browser.text_field(:name => "new_user_first_name").flash
230
+ # browser.text_field(name: "new_user_first_name").flash
233
231
  #
234
232
 
235
233
  def flash
@@ -262,7 +260,7 @@ module Watir
262
260
  # Returns given attribute value of element.
263
261
  #
264
262
  # @example
265
- # browser.a(:id => "link_2").attribute_value "title"
263
+ # browser.a(id: "link_2").attribute_value "title"
266
264
  # #=> "link_title_2"
267
265
  #
268
266
  # @param [String] attribute_name
@@ -278,7 +276,7 @@ module Watir
278
276
  # Returns outer (inner + element itself) HTML code of element.
279
277
  #
280
278
  # @example
281
- # browser.div(:id => 'foo').outer_html
279
+ # browser.div(id: 'foo').outer_html
282
280
  # #=> "<div id=\"foo\"><a href=\"#\">hello</a></div>"
283
281
  #
284
282
  # @return [String]
@@ -295,7 +293,7 @@ module Watir
295
293
  # Returns inner HTML code of element.
296
294
  #
297
295
  # @example
298
- # browser.div(:id => 'foo').inner_html
296
+ # browser.div(id: 'foo').inner_html
299
297
  # #=> "<a href=\"#\">hello</a>"
300
298
  #
301
299
  # @return [String]
@@ -310,7 +308,7 @@ module Watir
310
308
  # Sends sequence of keystrokes to element.
311
309
  #
312
310
  # @example
313
- # browser.text_field(:name => "new_user_first_name").send_keys "Watir", :return
311
+ # browser.text_field(name: "new_user_first_name").send_keys "Watir", :return
314
312
  #
315
313
  # @param [String, Symbol] *args
316
314
  #
@@ -349,9 +347,9 @@ module Watir
349
347
  # Note that you may omit "on" from event name.
350
348
  #
351
349
  # @example
352
- # browser.button(:name => "new_user_button").fire_event :click
353
- # browser.button(:name => "new_user_button").fire_event "mousemove"
354
- # browser.button(:name => "new_user_button").fire_event "onmouseover"
350
+ # browser.button(name: "new_user_button").fire_event :click
351
+ # browser.button(name: "new_user_button").fire_event "mousemove"
352
+ # browser.button(name: "new_user_button").fire_event "onmouseover"
355
353
  #
356
354
  # @param [String, Symbol] event_name
357
355
  #
@@ -373,7 +371,7 @@ module Watir
373
371
  e = element_call { execute_atom :getParentElement, @element }
374
372
 
375
373
  if e.kind_of?(Selenium::WebDriver::Element)
376
- Watir.element_class_for(e.tag_name.downcase).new(@parent, :element => e)
374
+ Watir.element_class_for(e.tag_name.downcase).new(@parent, element: e)
377
375
  end
378
376
  end
379
377
 
@@ -424,8 +422,8 @@ module Watir
424
422
  # Returns given style property of this element.
425
423
  #
426
424
  # @example
427
- # browser.button(:value => "Delete").style #=> "border: 4px solid red;"
428
- # browser.button(:value => "Delete").style("border") #=> "4px solid red"
425
+ # browser.button(value: "Delete").style #=> "border: 4px solid red;"
426
+ # browser.button(value: "Delete").style("border") #=> "4px solid red"
429
427
  #
430
428
  # @param [String] property
431
429
  # @return [String]
@@ -452,7 +450,7 @@ module Watir
452
450
  # Cast this Element instance to a more specific subtype.
453
451
  #
454
452
  # @example
455
- # browser.element(:xpath => "//input[@type='submit']").to_subtype
453
+ # browser.element(xpath: "//input[@type='submit']").to_subtype
456
454
  # #=> #<Watir::Button>
457
455
  #
458
456
 
@@ -479,7 +477,7 @@ module Watir
479
477
  klass = Watir.element_class_for(tag_name)
480
478
  end
481
479
 
482
- klass.new(@parent, :element => elem)
480
+ klass.new(@parent, element: elem)
483
481
  end
484
482
 
485
483
  #
@@ -494,28 +492,46 @@ module Watir
494
492
 
495
493
  protected
496
494
 
495
+ # Ensure that the element exists, making sure that it is not stale and located if necessary
497
496
  def assert_exists
498
- begin
499
- assert_not_stale if @element ||= @selector[:element]
500
- rescue UnknownObjectException => ex
501
- raise ex if @selector[:element] || !Watir.always_locate?
497
+ @element ||= @selector[:element]
498
+
499
+ if @element
500
+ ensure_not_stale # ensure not stale
501
+ else
502
+ @element = locate
502
503
  end
503
504
 
504
- @element ||= locate
505
+ assert_element_found
506
+ end
505
507
 
506
- unless @element
507
- raise UnknownObjectException, "unable to locate element, using #{selector_string}"
508
+ # Ensure that the element isn't stale, by relocating if it is (unless always_locate = false)
509
+ def ensure_not_stale
510
+ # Performance shortcut; only need recursive call to ensure context if stale in current context
511
+ return unless stale?
512
+
513
+ ensure_context
514
+ if stale?
515
+ if Watir.always_locate? && !@selector[:element]
516
+ @element = locate
517
+ else
518
+ reset!
519
+ end
508
520
  end
521
+ assert_element_found
522
+ end
523
+
524
+ def stale?
525
+ @element.enabled? # any wire call will check for staleness
526
+ false
527
+ rescue Selenium::WebDriver::Error::ObsoleteElementError
528
+ true
509
529
  end
510
530
 
511
- def assert_not_stale
512
- @parent.assert_not_stale
513
- @parent.switch_to! if @parent.is_a? IFrame
514
- @element.enabled? # do a staleness check - any wire call will do.
515
- rescue Selenium::WebDriver::Error::ObsoleteElementError => ex
516
- # don't cache a stale element - it will never come back
517
- reset!
518
- raise UnknownObjectException, "#{ex.message} - #{selector_string}"
531
+ def assert_element_found
532
+ unless @element
533
+ raise UnknownObjectException, "unable to locate element, using #{selector_string}"
534
+ end
519
535
  end
520
536
 
521
537
  def reset!
@@ -523,7 +539,7 @@ module Watir
523
539
  end
524
540
 
525
541
  def locate
526
- @parent.is_a?(IFrame) ? @parent.switch_to! : @parent.assert_exists
542
+ ensure_context
527
543
  locator_class.new(@parent.wd, @selector, self.class.attribute_list).locate
528
544
  end
529
545
 
@@ -537,6 +553,11 @@ module Watir
537
553
  @selector.inspect
538
554
  end
539
555
 
556
+ # Ensure the driver is in the desired browser context
557
+ def ensure_context
558
+ @parent.is_a?(IFrame) ? @parent.switch_to! : @parent.assert_exists
559
+ end
560
+
540
561
  def attribute?(attribute)
541
562
  assert_exists
542
563
  element_call do
@@ -574,7 +595,6 @@ module Watir
574
595
  yield
575
596
  rescue Selenium::WebDriver::Error::StaleElementReferenceError
576
597
  raise unless Watir.always_locate?
577
- reset!
578
598
  assert_exists
579
599
  retry
580
600
  end
@@ -588,5 +608,9 @@ module Watir
588
608
  end
589
609
  end
590
610
 
611
+ def respond_to_missing?(meth, *)
612
+ ElementLocator::WILDCARD_ATTRIBUTE === meth.to_s || super
613
+ end
614
+
591
615
  end # Element
592
616
  end # Watir
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  module Watir
3
2
  class FileField < Input
4
3
 
@@ -29,11 +28,11 @@ module Watir
29
28
 
30
29
  module Container
31
30
  def file_field(*args)
32
- FileField.new(self, extract_selector(args).merge(:tag_name => "input", :type => "file"))
31
+ FileField.new(self, extract_selector(args).merge(tag_name: "input", type: "file"))
33
32
  end
34
33
 
35
34
  def file_fields(*args)
36
- FileFieldCollection.new(self, extract_selector(args).merge(:tag_name => "input", :type => "file"))
35
+ FileFieldCollection.new(self, extract_selector(args).merge(tag_name: "input", type: "file"))
37
36
  end
38
37
  end # Container
39
38
 
@@ -1,11 +1,11 @@
1
1
  module Watir
2
2
  module Container
3
3
  def font(*args)
4
- Font.new(self, extract_selector(args).merge(:tag_name => "font"))
4
+ Font.new(self, extract_selector(args).merge(tag_name: "font"))
5
5
  end
6
6
 
7
7
  def fonts(*args)
8
- FontCollection.new(self, extract_selector(args).merge(:tag_name => "font"))
8
+ FontCollection.new(self, extract_selector(args).merge(tag_name: "font"))
9
9
  end
10
10
  end # Container
11
11
  end # Watir
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  module Watir
3
2
  class Form < HTMLElement
4
3
 
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  module Watir
3
2
  class Hidden < Input
4
3
  def visible?
@@ -8,11 +7,11 @@ module Watir
8
7
 
9
8
  module Container
10
9
  def hidden(*args)
11
- Hidden.new(self, extract_selector(args).merge(:tag_name => "input", :type => "hidden"))
10
+ Hidden.new(self, extract_selector(args).merge(tag_name: "input", type: "hidden"))
12
11
  end
13
12
 
14
13
  def hiddens(*args)
15
- HiddenCollection.new(self, extract_selector(args).merge(:tag_name => "input", :type => "hidden"))
14
+ HiddenCollection.new(self, extract_selector(args).merge(tag_name: "input", type: "hidden"))
16
15
  end
17
16
  end # Container
18
17
 
@@ -0,0 +1,2282 @@
1
+ # Autogenerated from HTML specification. Edits may be lost.
2
+ module Watir
3
+ class HTMLElement < Element
4
+ attribute(String, :title, :title)
5
+ attribute(String, :lang, :lang)
6
+ attribute("Boolean", :translate?, :translate)
7
+ attribute(String, :dir, :dir)
8
+ attribute(String, :dataset, :dataset)
9
+ attribute("Boolean", :item_scope?, :itemScope)
10
+ attribute(String, :item_type, :itemType)
11
+ attribute(String, :item_id, :itemId)
12
+ attribute(String, :item_ref, :itemRef)
13
+ attribute(String, :item_prop, :itemProp)
14
+ attribute(String, :properties, :properties)
15
+ attribute(String, :item_value, :itemValue)
16
+ attribute("Boolean", :hidden?, :hidden)
17
+ attribute(Fixnum, :tab_index, :tabIndex)
18
+ attribute(String, :access_key, :accessKey)
19
+ attribute(String, :access_key_label, :accessKeyLabel)
20
+ attribute("Boolean", :draggable?, :draggable)
21
+ attribute(String, :dropzone, :dropzone)
22
+ attribute(String, :context_menu, :contextMenu)
23
+ attribute("Boolean", :spellcheck?, :spellcheck)
24
+ attribute(String, :command_type, :commandType)
25
+ attribute(String, :command_label, :commandLabel)
26
+ attribute(String, :command_icon, :commandIcon)
27
+ attribute("Boolean", :command_hidden?, :commandHidden)
28
+ attribute("Boolean", :command_disabled?, :commandDisabled)
29
+ attribute("Boolean", :command_checked?, :commandChecked)
30
+ attribute(String, :onabort, :onabort)
31
+ attribute(String, :onautocomplete, :onautocomplete)
32
+ attribute(String, :onautocompleteerror, :onautocompleteerror)
33
+ attribute(String, :onblur, :onblur)
34
+ attribute(String, :oncancel, :oncancel)
35
+ attribute(String, :oncanplay, :oncanplay)
36
+ attribute(String, :oncanplaythrough, :oncanplaythrough)
37
+ attribute(String, :onchange, :onchange)
38
+ attribute(String, :onclick, :onclick)
39
+ attribute(String, :onclose, :onclose)
40
+ attribute(String, :oncontextmenu, :oncontextmenu)
41
+ attribute(String, :oncuechange, :oncuechange)
42
+ attribute(String, :ondblclick, :ondblclick)
43
+ attribute(String, :ondrag, :ondrag)
44
+ attribute(String, :ondragend, :ondragend)
45
+ attribute(String, :ondragenter, :ondragenter)
46
+ attribute(String, :ondragexit, :ondragexit)
47
+ attribute(String, :ondragleave, :ondragleave)
48
+ attribute(String, :ondragover, :ondragover)
49
+ attribute(String, :ondragstart, :ondragstart)
50
+ attribute(String, :ondrop, :ondrop)
51
+ attribute(String, :ondurationchange, :ondurationchange)
52
+ attribute(String, :onemptied, :onemptied)
53
+ attribute(String, :onended, :onended)
54
+ attribute(String, :onerror, :onerror)
55
+ attribute(String, :onfocus, :onfocus)
56
+ attribute(String, :oninput, :oninput)
57
+ attribute(String, :oninvalid, :oninvalid)
58
+ attribute(String, :onkeydown, :onkeydown)
59
+ attribute(String, :onkeypress, :onkeypress)
60
+ attribute(String, :onkeyup, :onkeyup)
61
+ attribute(String, :onload, :onload)
62
+ attribute(String, :onloadeddata, :onloadeddata)
63
+ attribute(String, :onloadedmetadata, :onloadedmetadata)
64
+ attribute(String, :onloadstart, :onloadstart)
65
+ attribute(String, :onmousedown, :onmousedown)
66
+ attribute(String, :onmouseenter, :onmouseenter)
67
+ attribute(String, :onmouseleave, :onmouseleave)
68
+ attribute(String, :onmousemove, :onmousemove)
69
+ attribute(String, :onmouseout, :onmouseout)
70
+ attribute(String, :onmouseover, :onmouseover)
71
+ attribute(String, :onmouseup, :onmouseup)
72
+ attribute(String, :onmousewheel, :onmousewheel)
73
+ attribute(String, :onpause, :onpause)
74
+ attribute(String, :onplay, :onplay)
75
+ attribute(String, :onplaying, :onplaying)
76
+ attribute(String, :onprogress, :onprogress)
77
+ attribute(String, :onratechange, :onratechange)
78
+ attribute(String, :onreset, :onreset)
79
+ attribute(String, :onresize, :onresize)
80
+ attribute(String, :onscroll, :onscroll)
81
+ attribute(String, :onseeked, :onseeked)
82
+ attribute(String, :onseeking, :onseeking)
83
+ attribute(String, :onselect, :onselect)
84
+ attribute(String, :onshow, :onshow)
85
+ attribute(String, :onsort, :onsort)
86
+ attribute(String, :onstalled, :onstalled)
87
+ attribute(String, :onsubmit, :onsubmit)
88
+ attribute(String, :onsuspend, :onsuspend)
89
+ attribute(String, :ontimeupdate, :ontimeupdate)
90
+ attribute(String, :ontoggle, :ontoggle)
91
+ attribute(String, :onvolumechange, :onvolumechange)
92
+ attribute(String, :onwaiting, :onwaiting)
93
+ attribute(String, :content_editable, :contentEditable)
94
+ attribute("Boolean", :content_editable?, :isContentEditable)
95
+ end
96
+ class HTMLElementCollection < ElementCollection
97
+ def element_class
98
+ HTMLElement
99
+ end
100
+ end
101
+
102
+ class Font < HTMLElement
103
+ attribute(String, :color, :color)
104
+ attribute(String, :face, :face)
105
+ attribute(String, :size, :size)
106
+ end
107
+ class FontCollection < ElementCollection
108
+ def element_class
109
+ Font
110
+ end
111
+ end
112
+
113
+ class Directory < HTMLElement
114
+ attribute("Boolean", :compact?, :compact)
115
+ end
116
+ class DirectoryCollection < ElementCollection
117
+ def element_class
118
+ Directory
119
+ end
120
+ end
121
+
122
+ class FrameSet < HTMLElement
123
+ attribute(String, :cols, :cols)
124
+ attribute(String, :onafterprint, :onafterprint)
125
+ attribute(String, :onbeforeprint, :onbeforeprint)
126
+ attribute(String, :onbeforeunload, :onbeforeunload)
127
+ attribute(String, :onhashchange, :onhashchange)
128
+ attribute(String, :onlanguagechange, :onlanguagechange)
129
+ attribute(String, :onmessage, :onmessage)
130
+ attribute(String, :onoffline, :onoffline)
131
+ attribute(String, :ononline, :ononline)
132
+ attribute(String, :onpagehide, :onpagehide)
133
+ attribute(String, :onpageshow, :onpageshow)
134
+ attribute(String, :onpopstate, :onpopstate)
135
+ attribute(String, :onstorage, :onstorage)
136
+ attribute(String, :onunload, :onunload)
137
+ end
138
+ class FrameSetCollection < ElementCollection
139
+ def element_class
140
+ FrameSet
141
+ end
142
+ end
143
+
144
+ class Marquee < HTMLElement
145
+ attribute(String, :behavior, :behavior)
146
+ attribute(String, :bg_color, :bgColor)
147
+ attribute(String, :direction, :direction)
148
+ attribute(String, :height, :height)
149
+ attribute(Fixnum, :hspace, :hspace)
150
+ attribute(Fixnum, :loop, :loop)
151
+ attribute(Fixnum, :scroll_amount, :scrollAmount)
152
+ attribute(Fixnum, :scroll_delay, :scrollDelay)
153
+ attribute("Boolean", :true_speed?, :trueSpeed)
154
+ attribute(Fixnum, :vspace, :vspace)
155
+ attribute(String, :width, :width)
156
+ attribute(String, :onbounce, :onbounce)
157
+ attribute(String, :onfinish, :onfinish)
158
+ attribute(String, :onstart, :onstart)
159
+ end
160
+ class MarqueeCollection < ElementCollection
161
+ def element_class
162
+ Marquee
163
+ end
164
+ end
165
+
166
+ class Applet < HTMLElement
167
+ attribute(String, :align, :align)
168
+ attribute(String, :alt, :alt)
169
+ attribute(String, :archive, :archive)
170
+ attribute(String, :code, :code)
171
+ attribute(String, :code_base, :codeBase)
172
+ attribute(String, :height, :height)
173
+ attribute(Fixnum, :hspace, :hspace)
174
+ attribute(String, :name, :name)
175
+ attribute(String, :object, :object)
176
+ attribute(Fixnum, :vspace, :vspace)
177
+ attribute(String, :width, :width)
178
+ end
179
+ class AppletCollection < ElementCollection
180
+ def element_class
181
+ Applet
182
+ end
183
+ end
184
+
185
+ class Canvas < HTMLElement
186
+ attribute(Fixnum, :width, :width)
187
+ attribute(Fixnum, :height, :height)
188
+ end
189
+ class CanvasCollection < ElementCollection
190
+ def element_class
191
+ Canvas
192
+ end
193
+ end
194
+
195
+ class Template < HTMLElement
196
+ attribute(String, :content, :content)
197
+ end
198
+ class TemplateCollection < ElementCollection
199
+ def element_class
200
+ Template
201
+ end
202
+ end
203
+
204
+ class Script < HTMLElement
205
+ attribute(String, :src, :src)
206
+ attribute(String, :type, :type)
207
+ attribute(String, :charset, :charset)
208
+ attribute("Boolean", :async?, :async)
209
+ attribute("Boolean", :defer?, :defer)
210
+ attribute(String, :cross_origin, :crossOrigin)
211
+ attribute(String, :event, :event)
212
+ attribute(String, :for, :htmlFor)
213
+ end
214
+ class ScriptCollection < ElementCollection
215
+ def element_class
216
+ Script
217
+ end
218
+ end
219
+
220
+ class Dialog < HTMLElement
221
+ attribute("Boolean", :open?, :open)
222
+ attribute(String, :return_value, :returnValue)
223
+ end
224
+ class DialogCollection < ElementCollection
225
+ def element_class
226
+ Dialog
227
+ end
228
+ end
229
+
230
+ class MenuItem < HTMLElement
231
+ attribute(String, :type, :type)
232
+ attribute(String, :label, :label)
233
+ attribute(String, :icon, :icon)
234
+ attribute("Boolean", :disabled?, :disabled)
235
+ attribute("Boolean", :checked?, :checked)
236
+ attribute(String, :radiogroup, :radiogroup)
237
+ attribute("Boolean", :default?, :default)
238
+ attribute(String, :command, :command)
239
+ end
240
+ class MenuItemCollection < ElementCollection
241
+ def element_class
242
+ MenuItem
243
+ end
244
+ end
245
+
246
+ class Menu < HTMLElement
247
+ attribute(String, :type, :type)
248
+ attribute(String, :label, :label)
249
+ attribute("Boolean", :compact?, :compact)
250
+ end
251
+ class MenuCollection < ElementCollection
252
+ def element_class
253
+ Menu
254
+ end
255
+ end
256
+
257
+ class Details < HTMLElement
258
+ attribute("Boolean", :open?, :open)
259
+ end
260
+ class DetailsCollection < ElementCollection
261
+ def element_class
262
+ Details
263
+ end
264
+ end
265
+
266
+ class Legend < HTMLElement
267
+ attribute(String, :form, :form)
268
+ attribute(String, :align, :align)
269
+ end
270
+ class LegendCollection < ElementCollection
271
+ def element_class
272
+ Legend
273
+ end
274
+ end
275
+
276
+ class FieldSet < HTMLElement
277
+ attribute("Boolean", :disabled?, :disabled)
278
+ attribute(String, :form, :form)
279
+ attribute(String, :name, :name)
280
+ attribute(String, :type, :type)
281
+ attribute("Boolean", :will_validate?, :willValidate)
282
+ attribute(String, :validity, :validity)
283
+ attribute(String, :validation_message, :validationMessage)
284
+ end
285
+ class FieldSetCollection < ElementCollection
286
+ def element_class
287
+ FieldSet
288
+ end
289
+ end
290
+
291
+ class Meter < HTMLElement
292
+ attribute(Float, :value, :value)
293
+ attribute(Float, :min, :min)
294
+ attribute(Float, :max, :max)
295
+ attribute(Float, :low, :low)
296
+ attribute(Float, :high, :high)
297
+ attribute(Float, :optimum, :optimum)
298
+ attribute(String, :labels, :labels)
299
+ end
300
+ class MeterCollection < ElementCollection
301
+ def element_class
302
+ Meter
303
+ end
304
+ end
305
+
306
+ class Progress < HTMLElement
307
+ attribute(Float, :value, :value)
308
+ attribute(Float, :max, :max)
309
+ attribute(Float, :position, :position)
310
+ attribute(String, :labels, :labels)
311
+ end
312
+ class ProgressCollection < ElementCollection
313
+ def element_class
314
+ Progress
315
+ end
316
+ end
317
+
318
+ class Output < HTMLElement
319
+ attribute(String, :for, :htmlFor)
320
+ attribute(String, :form, :form)
321
+ attribute(String, :name, :name)
322
+ attribute(String, :type, :type)
323
+ attribute(String, :default_value, :defaultValue)
324
+ attribute(String, :value, :value)
325
+ attribute("Boolean", :will_validate?, :willValidate)
326
+ attribute(String, :validity, :validity)
327
+ attribute(String, :validation_message, :validationMessage)
328
+ attribute(String, :labels, :labels)
329
+ end
330
+ class OutputCollection < ElementCollection
331
+ def element_class
332
+ Output
333
+ end
334
+ end
335
+
336
+ class Keygen < HTMLElement
337
+ attribute("Boolean", :autofocus?, :autofocus)
338
+ attribute(String, :challenge, :challenge)
339
+ attribute("Boolean", :disabled?, :disabled)
340
+ attribute(String, :form, :form)
341
+ attribute(String, :keytype, :keytype)
342
+ attribute(String, :name, :name)
343
+ attribute(String, :type, :type)
344
+ attribute("Boolean", :will_validate?, :willValidate)
345
+ attribute(String, :validity, :validity)
346
+ attribute(String, :validation_message, :validationMessage)
347
+ attribute(String, :labels, :labels)
348
+ end
349
+ class KeygenCollection < ElementCollection
350
+ def element_class
351
+ Keygen
352
+ end
353
+ end
354
+
355
+ class TextArea < HTMLElement
356
+ attribute(String, :autocomplete, :autocomplete)
357
+ attribute("Boolean", :autofocus?, :autofocus)
358
+ attribute(Fixnum, :cols, :cols)
359
+ attribute(String, :dir_name, :dirName)
360
+ attribute("Boolean", :disabled?, :disabled)
361
+ attribute(String, :form, :form)
362
+ attribute(String, :input_mode, :inputMode)
363
+ attribute(Fixnum, :max_length, :maxLength)
364
+ attribute(Fixnum, :min_length, :minLength)
365
+ attribute(String, :name, :name)
366
+ attribute(String, :placeholder, :placeholder)
367
+ attribute("Boolean", :read_only?, :readOnly)
368
+ attribute("Boolean", :required?, :required)
369
+ attribute(String, :wrap, :wrap)
370
+ attribute(String, :type, :type)
371
+ attribute(String, :default_value, :defaultValue)
372
+ attribute(String, :value, :value)
373
+ attribute(Fixnum, :text_length, :textLength)
374
+ attribute("Boolean", :will_validate?, :willValidate)
375
+ attribute(String, :validity, :validity)
376
+ attribute(String, :validation_message, :validationMessage)
377
+ attribute(String, :labels, :labels)
378
+ attribute(Fixnum, :selection_start, :selectionStart)
379
+ attribute(Fixnum, :selection_end, :selectionEnd)
380
+ attribute(String, :selection_direction, :selectionDirection)
381
+ end
382
+ class TextAreaCollection < ElementCollection
383
+ def element_class
384
+ TextArea
385
+ end
386
+ end
387
+
388
+ class Option < HTMLElement
389
+ attribute("Boolean", :disabled?, :disabled)
390
+ attribute(String, :form, :form)
391
+ attribute(String, :label, :label)
392
+ attribute("Boolean", :default_selected?, :defaultSelected)
393
+ attribute("Boolean", :selected?, :selected)
394
+ attribute(String, :value, :value)
395
+ attribute(Fixnum, :index, :index)
396
+ end
397
+ class OptionCollection < ElementCollection
398
+ def element_class
399
+ Option
400
+ end
401
+ end
402
+
403
+ class OptGroup < HTMLElement
404
+ attribute("Boolean", :disabled?, :disabled)
405
+ attribute(String, :label, :label)
406
+ end
407
+ class OptGroupCollection < ElementCollection
408
+ def element_class
409
+ OptGroup
410
+ end
411
+ end
412
+
413
+ class DataList < HTMLElement
414
+ attribute(String, :options, :options)
415
+ end
416
+ class DataListCollection < ElementCollection
417
+ def element_class
418
+ DataList
419
+ end
420
+ end
421
+
422
+ class Select < HTMLElement
423
+ attribute(String, :autocomplete, :autocomplete)
424
+ attribute("Boolean", :autofocus?, :autofocus)
425
+ attribute("Boolean", :disabled?, :disabled)
426
+ attribute(String, :form, :form)
427
+ attribute("Boolean", :multiple?, :multiple)
428
+ attribute(String, :name, :name)
429
+ attribute("Boolean", :required?, :required)
430
+ attribute(Fixnum, :size, :size)
431
+ attribute(String, :type, :type)
432
+ attribute(String, :options, :options)
433
+ attribute(Fixnum, :length, :length)
434
+ attribute(String, :selected_options, :selectedOptions)
435
+ attribute(Fixnum, :selected_index, :selectedIndex)
436
+ attribute(String, :value, :value)
437
+ attribute("Boolean", :will_validate?, :willValidate)
438
+ attribute(String, :validity, :validity)
439
+ attribute(String, :validation_message, :validationMessage)
440
+ attribute(String, :labels, :labels)
441
+ end
442
+ class SelectCollection < ElementCollection
443
+ def element_class
444
+ Select
445
+ end
446
+ end
447
+
448
+ class Button < HTMLElement
449
+ attribute("Boolean", :autofocus?, :autofocus)
450
+ attribute("Boolean", :disabled?, :disabled)
451
+ attribute(String, :form, :form)
452
+ attribute(String, :form_action, :formAction)
453
+ attribute(String, :form_enctype, :formEnctype)
454
+ attribute(String, :form_method, :formMethod)
455
+ attribute("Boolean", :form_no_validate?, :formNoValidate)
456
+ attribute(String, :form_target, :formTarget)
457
+ attribute(String, :name, :name)
458
+ attribute(String, :type, :type)
459
+ attribute(String, :value, :value)
460
+ attribute(String, :menu, :menu)
461
+ attribute("Boolean", :will_validate?, :willValidate)
462
+ attribute(String, :validity, :validity)
463
+ attribute(String, :validation_message, :validationMessage)
464
+ attribute(String, :labels, :labels)
465
+ end
466
+ class ButtonCollection < ElementCollection
467
+ def element_class
468
+ Button
469
+ end
470
+ end
471
+
472
+ class Input < HTMLElement
473
+ attribute(String, :accept, :accept)
474
+ attribute(String, :alt, :alt)
475
+ attribute(String, :autocomplete, :autocomplete)
476
+ attribute("Boolean", :autofocus?, :autofocus)
477
+ attribute("Boolean", :default_checked?, :defaultChecked)
478
+ attribute("Boolean", :checked?, :checked)
479
+ attribute(String, :dir_name, :dirName)
480
+ attribute("Boolean", :disabled?, :disabled)
481
+ attribute(String, :form, :form)
482
+ attribute(String, :files, :files)
483
+ attribute(String, :form_action, :formAction)
484
+ attribute(String, :form_enctype, :formEnctype)
485
+ attribute(String, :form_method, :formMethod)
486
+ attribute("Boolean", :form_no_validate?, :formNoValidate)
487
+ attribute(String, :form_target, :formTarget)
488
+ attribute(Fixnum, :height, :height)
489
+ attribute("Boolean", :indeterminate?, :indeterminate)
490
+ attribute(String, :input_mode, :inputMode)
491
+ attribute(String, :list, :list)
492
+ attribute(String, :max, :max)
493
+ attribute(Fixnum, :max_length, :maxLength)
494
+ attribute(String, :min, :min)
495
+ attribute(Fixnum, :min_length, :minLength)
496
+ attribute("Boolean", :multiple?, :multiple)
497
+ attribute(String, :name, :name)
498
+ attribute(String, :pattern, :pattern)
499
+ attribute(String, :placeholder, :placeholder)
500
+ attribute("Boolean", :read_only?, :readOnly)
501
+ attribute("Boolean", :required?, :required)
502
+ attribute(Fixnum, :size, :size)
503
+ attribute(String, :src, :src)
504
+ attribute(String, :step, :step)
505
+ attribute(String, :type, :type)
506
+ attribute(String, :default_value, :defaultValue)
507
+ attribute(String, :value, :value)
508
+ attribute(String, :value_as_date, :valueAsDate)
509
+ attribute(Float, :value_as_number, :valueAsNumber)
510
+ attribute(Float, :value_low, :valueLow)
511
+ attribute(Float, :value_high, :valueHigh)
512
+ attribute(Fixnum, :width, :width)
513
+ attribute("Boolean", :will_validate?, :willValidate)
514
+ attribute(String, :validity, :validity)
515
+ attribute(String, :validation_message, :validationMessage)
516
+ attribute(String, :labels, :labels)
517
+ attribute(Fixnum, :selection_start, :selectionStart)
518
+ attribute(Fixnum, :selection_end, :selectionEnd)
519
+ attribute(String, :selection_direction, :selectionDirection)
520
+ attribute(String, :align, :align)
521
+ attribute(String, :use_map, :useMap)
522
+ end
523
+ class InputCollection < ElementCollection
524
+ def element_class
525
+ Input
526
+ end
527
+ end
528
+
529
+ class Label < HTMLElement
530
+ attribute(String, :form, :form)
531
+ attribute(String, :for, :htmlFor)
532
+ attribute(String, :control, :control)
533
+ end
534
+ class LabelCollection < ElementCollection
535
+ def element_class
536
+ Label
537
+ end
538
+ end
539
+
540
+ class Form < HTMLElement
541
+ attribute(String, :accept_charset, :acceptCharset)
542
+ attribute(String, :action, :action)
543
+ attribute(String, :autocomplete, :autocomplete)
544
+ attribute(String, :enctype, :enctype)
545
+ attribute(String, :encoding, :encoding)
546
+ attribute(String, :method, :method)
547
+ attribute(String, :name, :name)
548
+ attribute("Boolean", :no_validate?, :noValidate)
549
+ attribute(String, :target, :target)
550
+ attribute(Fixnum, :length, :length)
551
+ end
552
+ class FormCollection < ElementCollection
553
+ def element_class
554
+ Form
555
+ end
556
+ end
557
+
558
+ class TableCell < HTMLElement
559
+ attribute(Fixnum, :col_span, :colSpan)
560
+ attribute(Fixnum, :row_span, :rowSpan)
561
+ attribute(String, :headers, :headers)
562
+ attribute(Fixnum, :cell_index, :cellIndex)
563
+ attribute(String, :align, :align)
564
+ attribute(String, :axis, :axis)
565
+ attribute(String, :height, :height)
566
+ attribute(String, :width, :width)
567
+ attribute(String, :ch, :ch)
568
+ attribute(String, :ch_off, :chOff)
569
+ attribute("Boolean", :no_wrap?, :noWrap)
570
+ attribute(String, :v_align, :vAlign)
571
+ attribute(String, :bg_color, :bgColor)
572
+ end
573
+ class TableCellCollection < ElementCollection
574
+ def element_class
575
+ TableCell
576
+ end
577
+ end
578
+
579
+ class TableHeaderCell < TableCell
580
+ attribute(String, :scope, :scope)
581
+ attribute(String, :abbr, :abbr)
582
+ attribute(String, :sorted, :sorted)
583
+ end
584
+ class TableHeaderCellCollection < ElementCollection
585
+ def element_class
586
+ TableHeaderCell
587
+ end
588
+ end
589
+
590
+ class TableDataCell < TableCell
591
+ attribute(String, :abbr, :abbr)
592
+ end
593
+ class TableDataCellCollection < ElementCollection
594
+ def element_class
595
+ TableDataCell
596
+ end
597
+ end
598
+
599
+ class TableRow < HTMLElement
600
+ attribute(Fixnum, :row_index, :rowIndex)
601
+ attribute(Fixnum, :section_row_index, :sectionRowIndex)
602
+ attribute(String, :align, :align)
603
+ attribute(String, :ch, :ch)
604
+ attribute(String, :ch_off, :chOff)
605
+ attribute(String, :v_align, :vAlign)
606
+ attribute(String, :bg_color, :bgColor)
607
+ end
608
+ class TableRowCollection < ElementCollection
609
+ def element_class
610
+ TableRow
611
+ end
612
+ end
613
+
614
+ class TableSection < HTMLElement
615
+ attribute(String, :align, :align)
616
+ attribute(String, :ch, :ch)
617
+ attribute(String, :ch_off, :chOff)
618
+ attribute(String, :v_align, :vAlign)
619
+ end
620
+ class TableSectionCollection < ElementCollection
621
+ def element_class
622
+ TableSection
623
+ end
624
+ end
625
+
626
+ class TableCol < HTMLElement
627
+ attribute(String, :align, :align)
628
+ attribute(String, :ch, :ch)
629
+ attribute(String, :ch_off, :chOff)
630
+ attribute(String, :v_align, :vAlign)
631
+ attribute(String, :width, :width)
632
+ end
633
+ class TableColCollection < ElementCollection
634
+ def element_class
635
+ TableCol
636
+ end
637
+ end
638
+
639
+ class TableCaption < HTMLElement
640
+ attribute(String, :align, :align)
641
+ end
642
+ class TableCaptionCollection < ElementCollection
643
+ def element_class
644
+ TableCaption
645
+ end
646
+ end
647
+
648
+ class Table < HTMLElement
649
+ attribute(String, :caption, :caption)
650
+ attribute(String, :t_head, :tHead)
651
+ attribute(String, :t_foot, :tFoot)
652
+ attribute(String, :t_bodies, :tBodies)
653
+ attribute("Boolean", :sortable?, :sortable)
654
+ attribute(String, :align, :align)
655
+ attribute(String, :border, :border)
656
+ attribute(String, :frame, :frame)
657
+ attribute(String, :rules, :rules)
658
+ attribute(String, :summary, :summary)
659
+ attribute(String, :width, :width)
660
+ attribute(String, :bg_color, :bgColor)
661
+ attribute(String, :cell_padding, :cellPadding)
662
+ attribute(String, :cell_spacing, :cellSpacing)
663
+ end
664
+ class TableCollection < ElementCollection
665
+ def element_class
666
+ Table
667
+ end
668
+ end
669
+
670
+ class Area < HTMLElement
671
+ attribute(String, :alt, :alt)
672
+ attribute(String, :coords, :coords)
673
+ attribute(String, :shape, :shape)
674
+ attribute(String, :target, :target)
675
+ attribute(String, :download, :download)
676
+ attribute(String, :ping, :ping)
677
+ attribute(String, :rel, :rel)
678
+ attribute(String, :rel_list, :relList)
679
+ attribute(String, :hreflang, :hreflang)
680
+ attribute(String, :type, :type)
681
+ attribute("Boolean", :no_href?, :noHref)
682
+ end
683
+ class AreaCollection < ElementCollection
684
+ def element_class
685
+ Area
686
+ end
687
+ end
688
+
689
+ class Map < HTMLElement
690
+ attribute(String, :name, :name)
691
+ attribute(String, :areas, :areas)
692
+ attribute(String, :images, :images)
693
+ end
694
+ class MapCollection < ElementCollection
695
+ def element_class
696
+ Map
697
+ end
698
+ end
699
+
700
+ class Media < HTMLElement
701
+ attribute(String, :error, :error)
702
+ attribute(String, :src, :src)
703
+ attribute(String, :src_object, :srcObject)
704
+ attribute(String, :current_src, :currentSrc)
705
+ attribute(String, :cross_origin, :crossOrigin)
706
+ attribute(Fixnum, :network_state, :networkState)
707
+ attribute(String, :preload, :preload)
708
+ attribute(String, :buffered, :buffered)
709
+ attribute(Fixnum, :ready_state, :readyState)
710
+ attribute("Boolean", :seeking?, :seeking)
711
+ attribute(Float, :current_time, :currentTime)
712
+ attribute(Float, :duration, :duration)
713
+ attribute("Boolean", :paused?, :paused)
714
+ attribute(Float, :default_playback_rate, :defaultPlaybackRate)
715
+ attribute(Float, :playback_rate, :playbackRate)
716
+ attribute(String, :played, :played)
717
+ attribute(String, :seekable, :seekable)
718
+ attribute("Boolean", :ended?, :ended)
719
+ attribute("Boolean", :autoplay?, :autoplay)
720
+ attribute("Boolean", :loop?, :loop)
721
+ attribute(String, :media_group, :mediaGroup)
722
+ attribute(String, :controller, :controller)
723
+ attribute("Boolean", :controls?, :controls)
724
+ attribute(Float, :volume, :volume)
725
+ attribute("Boolean", :muted?, :muted)
726
+ attribute("Boolean", :default_muted?, :defaultMuted)
727
+ attribute(String, :audio_tracks, :audioTracks)
728
+ attribute(String, :video_tracks, :videoTracks)
729
+ attribute(String, :text_tracks, :textTracks)
730
+ end
731
+ class MediaCollection < ElementCollection
732
+ def element_class
733
+ Media
734
+ end
735
+ end
736
+
737
+ class Audio < Media
738
+ end
739
+ class AudioCollection < ElementCollection
740
+ def element_class
741
+ Audio
742
+ end
743
+ end
744
+
745
+ class Video < Media
746
+ attribute(Fixnum, :width, :width)
747
+ attribute(Fixnum, :height, :height)
748
+ attribute(Fixnum, :video_width, :videoWidth)
749
+ attribute(Fixnum, :video_height, :videoHeight)
750
+ attribute(String, :poster, :poster)
751
+ end
752
+ class VideoCollection < ElementCollection
753
+ def element_class
754
+ Video
755
+ end
756
+ end
757
+
758
+ class Track < HTMLElement
759
+ attribute(String, :kind, :kind)
760
+ attribute(String, :src, :src)
761
+ attribute(String, :srclang, :srclang)
762
+ attribute(String, :label, :label)
763
+ attribute("Boolean", :default?, :default)
764
+ attribute(Fixnum, :ready_state, :readyState)
765
+ attribute(String, :track, :track)
766
+ end
767
+ class TrackCollection < ElementCollection
768
+ def element_class
769
+ Track
770
+ end
771
+ end
772
+
773
+ class Param < HTMLElement
774
+ attribute(String, :name, :name)
775
+ attribute(String, :value, :value)
776
+ attribute(String, :type, :type)
777
+ attribute(String, :value_type, :valueType)
778
+ end
779
+ class ParamCollection < ElementCollection
780
+ def element_class
781
+ Param
782
+ end
783
+ end
784
+
785
+ class Object < HTMLElement
786
+ attribute(String, :data, :data)
787
+ attribute(String, :type, :type)
788
+ attribute("Boolean", :type_must_match?, :typeMustMatch)
789
+ attribute(String, :name, :name)
790
+ attribute(String, :use_map, :useMap)
791
+ attribute(String, :form, :form)
792
+ attribute(String, :width, :width)
793
+ attribute(String, :height, :height)
794
+ attribute(String, :content_document, :contentDocument)
795
+ attribute(String, :content_window, :contentWindow)
796
+ attribute("Boolean", :will_validate?, :willValidate)
797
+ attribute(String, :validity, :validity)
798
+ attribute(String, :validation_message, :validationMessage)
799
+ attribute(String, :align, :align)
800
+ attribute(String, :archive, :archive)
801
+ attribute(String, :code, :code)
802
+ attribute("Boolean", :declare?, :declare)
803
+ attribute(Fixnum, :hspace, :hspace)
804
+ attribute(String, :standby, :standby)
805
+ attribute(Fixnum, :vspace, :vspace)
806
+ attribute(String, :code_base, :codeBase)
807
+ attribute(String, :code_type, :codeType)
808
+ attribute(String, :border, :border)
809
+ end
810
+ class ObjectCollection < ElementCollection
811
+ def element_class
812
+ Object
813
+ end
814
+ end
815
+
816
+ class Embed < HTMLElement
817
+ attribute(String, :src, :src)
818
+ attribute(String, :type, :type)
819
+ attribute(String, :width, :width)
820
+ attribute(String, :height, :height)
821
+ attribute(String, :align, :align)
822
+ attribute(String, :name, :name)
823
+ end
824
+ class EmbedCollection < ElementCollection
825
+ def element_class
826
+ Embed
827
+ end
828
+ end
829
+
830
+ class IFrame < HTMLElement
831
+ attribute(String, :src, :src)
832
+ attribute(String, :srcdoc, :srcdoc)
833
+ attribute(String, :name, :name)
834
+ attribute(String, :sandbox, :sandbox)
835
+ attribute("Boolean", :seamless?, :seamless)
836
+ attribute("Boolean", :allow_fullscreen?, :allowFullscreen)
837
+ attribute(String, :width, :width)
838
+ attribute(String, :height, :height)
839
+ attribute(String, :content_document, :contentDocument)
840
+ attribute(String, :content_window, :contentWindow)
841
+ attribute(String, :align, :align)
842
+ attribute(String, :scrolling, :scrolling)
843
+ attribute(String, :frame_border, :frameBorder)
844
+ attribute(String, :long_desc, :longDesc)
845
+ attribute(String, :margin_height, :marginHeight)
846
+ attribute(String, :margin_width, :marginWidth)
847
+ end
848
+ class IFrameCollection < ElementCollection
849
+ def element_class
850
+ IFrame
851
+ end
852
+ end
853
+
854
+ class Image < HTMLElement
855
+ attribute(String, :alt, :alt)
856
+ attribute(String, :src, :src)
857
+ attribute(String, :srcset, :srcset)
858
+ attribute(String, :sizes, :sizes)
859
+ attribute(String, :cross_origin, :crossOrigin)
860
+ attribute(String, :use_map, :useMap)
861
+ attribute("Boolean", :map?, :isMap)
862
+ attribute(Fixnum, :width, :width)
863
+ attribute(Fixnum, :height, :height)
864
+ attribute(Fixnum, :natural_width, :naturalWidth)
865
+ attribute(Fixnum, :natural_height, :naturalHeight)
866
+ attribute("Boolean", :complete?, :complete)
867
+ attribute(String, :current_src, :currentSrc)
868
+ attribute(String, :name, :name)
869
+ attribute(String, :lowsrc, :lowsrc)
870
+ attribute(String, :align, :align)
871
+ attribute(Fixnum, :hspace, :hspace)
872
+ attribute(Fixnum, :vspace, :vspace)
873
+ attribute(String, :long_desc, :longDesc)
874
+ attribute(String, :border, :border)
875
+ end
876
+ class ImageCollection < ElementCollection
877
+ def element_class
878
+ Image
879
+ end
880
+ end
881
+
882
+ class Source < HTMLElement
883
+ attribute(String, :srcset, :srcset)
884
+ attribute(String, :sizes, :sizes)
885
+ attribute(String, :media, :media)
886
+ attribute(String, :src, :src)
887
+ attribute(String, :type, :type)
888
+ end
889
+ class SourceCollection < ElementCollection
890
+ def element_class
891
+ Source
892
+ end
893
+ end
894
+
895
+ class Picture < HTMLElement
896
+ end
897
+ class PictureCollection < ElementCollection
898
+ def element_class
899
+ Picture
900
+ end
901
+ end
902
+
903
+ class Mod < HTMLElement
904
+ attribute(String, :cite, :cite)
905
+ attribute(String, :date_time, :dateTime)
906
+ end
907
+ class ModCollection < ElementCollection
908
+ def element_class
909
+ Mod
910
+ end
911
+ end
912
+
913
+ class BR < HTMLElement
914
+ attribute(String, :clear, :clear)
915
+ end
916
+ class BRCollection < ElementCollection
917
+ def element_class
918
+ BR
919
+ end
920
+ end
921
+
922
+ class Span < HTMLElement
923
+ end
924
+ class SpanCollection < ElementCollection
925
+ def element_class
926
+ Span
927
+ end
928
+ end
929
+
930
+ class Time < HTMLElement
931
+ attribute(String, :date_time, :dateTime)
932
+ end
933
+ class TimeCollection < ElementCollection
934
+ def element_class
935
+ Time
936
+ end
937
+ end
938
+
939
+ class Data < HTMLElement
940
+ attribute(String, :value, :value)
941
+ end
942
+ class DataCollection < ElementCollection
943
+ def element_class
944
+ Data
945
+ end
946
+ end
947
+
948
+ class Anchor < HTMLElement
949
+ attribute(String, :target, :target)
950
+ attribute(String, :download, :download)
951
+ attribute(String, :ping, :ping)
952
+ attribute(String, :rel, :rel)
953
+ attribute(String, :rel_list, :relList)
954
+ attribute(String, :hreflang, :hreflang)
955
+ attribute(String, :type, :type)
956
+ attribute(String, :coords, :coords)
957
+ attribute(String, :charset, :charset)
958
+ attribute(String, :name, :name)
959
+ attribute(String, :rev, :rev)
960
+ attribute(String, :shape, :shape)
961
+ end
962
+ class AnchorCollection < ElementCollection
963
+ def element_class
964
+ Anchor
965
+ end
966
+ end
967
+
968
+ class Div < HTMLElement
969
+ attribute(String, :align, :align)
970
+ end
971
+ class DivCollection < ElementCollection
972
+ def element_class
973
+ Div
974
+ end
975
+ end
976
+
977
+ class DList < HTMLElement
978
+ attribute("Boolean", :compact?, :compact)
979
+ end
980
+ class DListCollection < ElementCollection
981
+ def element_class
982
+ DList
983
+ end
984
+ end
985
+
986
+ class LI < HTMLElement
987
+ attribute(Fixnum, :value, :value)
988
+ attribute(String, :type, :type)
989
+ end
990
+ class LICollection < ElementCollection
991
+ def element_class
992
+ LI
993
+ end
994
+ end
995
+
996
+ class UList < HTMLElement
997
+ attribute("Boolean", :compact?, :compact)
998
+ attribute(String, :type, :type)
999
+ end
1000
+ class UListCollection < ElementCollection
1001
+ def element_class
1002
+ UList
1003
+ end
1004
+ end
1005
+
1006
+ class OList < HTMLElement
1007
+ attribute("Boolean", :reversed?, :reversed)
1008
+ attribute(Fixnum, :start, :start)
1009
+ attribute(String, :type, :type)
1010
+ attribute("Boolean", :compact?, :compact)
1011
+ end
1012
+ class OListCollection < ElementCollection
1013
+ def element_class
1014
+ OList
1015
+ end
1016
+ end
1017
+
1018
+ class Quote < HTMLElement
1019
+ attribute(String, :cite, :cite)
1020
+ end
1021
+ class QuoteCollection < ElementCollection
1022
+ def element_class
1023
+ Quote
1024
+ end
1025
+ end
1026
+
1027
+ class Pre < HTMLElement
1028
+ attribute(Fixnum, :width, :width)
1029
+ end
1030
+ class PreCollection < ElementCollection
1031
+ def element_class
1032
+ Pre
1033
+ end
1034
+ end
1035
+
1036
+ class HR < HTMLElement
1037
+ attribute(String, :align, :align)
1038
+ attribute(String, :color, :color)
1039
+ attribute("Boolean", :no_shade?, :noShade)
1040
+ attribute(String, :size, :size)
1041
+ attribute(String, :width, :width)
1042
+ end
1043
+ class HRCollection < ElementCollection
1044
+ def element_class
1045
+ HR
1046
+ end
1047
+ end
1048
+
1049
+ class Paragraph < HTMLElement
1050
+ attribute(String, :align, :align)
1051
+ end
1052
+ class ParagraphCollection < ElementCollection
1053
+ def element_class
1054
+ Paragraph
1055
+ end
1056
+ end
1057
+
1058
+ class Heading < HTMLElement
1059
+ attribute(String, :align, :align)
1060
+ end
1061
+ class HeadingCollection < ElementCollection
1062
+ def element_class
1063
+ Heading
1064
+ end
1065
+ end
1066
+
1067
+ class Body < HTMLElement
1068
+ attribute(String, :link, :link)
1069
+ attribute(String, :v_link, :vLink)
1070
+ attribute(String, :a_link, :aLink)
1071
+ attribute(String, :bg_color, :bgColor)
1072
+ attribute(String, :background, :background)
1073
+ attribute(String, :onafterprint, :onafterprint)
1074
+ attribute(String, :onbeforeprint, :onbeforeprint)
1075
+ attribute(String, :onbeforeunload, :onbeforeunload)
1076
+ attribute(String, :onhashchange, :onhashchange)
1077
+ attribute(String, :onlanguagechange, :onlanguagechange)
1078
+ attribute(String, :onmessage, :onmessage)
1079
+ attribute(String, :onoffline, :onoffline)
1080
+ attribute(String, :ononline, :ononline)
1081
+ attribute(String, :onpagehide, :onpagehide)
1082
+ attribute(String, :onpageshow, :onpageshow)
1083
+ attribute(String, :onpopstate, :onpopstate)
1084
+ attribute(String, :onstorage, :onstorage)
1085
+ attribute(String, :onunload, :onunload)
1086
+ end
1087
+ class BodyCollection < ElementCollection
1088
+ def element_class
1089
+ Body
1090
+ end
1091
+ end
1092
+
1093
+ class Style < HTMLElement
1094
+ attribute(String, :media, :media)
1095
+ attribute(String, :type, :type)
1096
+ attribute("Boolean", :scoped?, :scoped)
1097
+ end
1098
+ class StyleCollection < ElementCollection
1099
+ def element_class
1100
+ Style
1101
+ end
1102
+ end
1103
+
1104
+ class Meta < HTMLElement
1105
+ attribute(String, :name, :name)
1106
+ attribute(String, :http_equiv, :httpEquiv)
1107
+ attribute(String, :content, :content)
1108
+ attribute(String, :scheme, :scheme)
1109
+ end
1110
+ class MetaCollection < ElementCollection
1111
+ def element_class
1112
+ Meta
1113
+ end
1114
+ end
1115
+
1116
+ class Base < HTMLElement
1117
+ attribute(String, :href, :href)
1118
+ attribute(String, :target, :target)
1119
+ end
1120
+ class BaseCollection < ElementCollection
1121
+ def element_class
1122
+ Base
1123
+ end
1124
+ end
1125
+
1126
+ class Title < HTMLElement
1127
+ end
1128
+ class TitleCollection < ElementCollection
1129
+ def element_class
1130
+ Title
1131
+ end
1132
+ end
1133
+
1134
+ class Head < HTMLElement
1135
+ end
1136
+ class HeadCollection < ElementCollection
1137
+ def element_class
1138
+ Head
1139
+ end
1140
+ end
1141
+
1142
+ class Html < HTMLElement
1143
+ attribute(String, :version, :version)
1144
+ end
1145
+ class HtmlCollection < ElementCollection
1146
+ def element_class
1147
+ Html
1148
+ end
1149
+ end
1150
+
1151
+ class Unknown < HTMLElement
1152
+ end
1153
+ class UnknownCollection < ElementCollection
1154
+ def element_class
1155
+ Unknown
1156
+ end
1157
+ end
1158
+
1159
+
1160
+ module Container
1161
+
1162
+ # @return [Anchor]
1163
+ def a(*args)
1164
+ Anchor.new(self, extract_selector(args).merge(tag_name: "a"))
1165
+ end
1166
+ # @return [AnchorCollection]
1167
+ def as(*args)
1168
+ AnchorCollection.new(self, extract_selector(args).merge(tag_name: "a"))
1169
+ end
1170
+ Watir.tag_to_class[:a] = Anchor
1171
+
1172
+ # @return [HTMLElement]
1173
+ def abbr(*args)
1174
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "abbr"))
1175
+ end
1176
+ # @return [HTMLElementCollection]
1177
+ def abbrs(*args)
1178
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "abbr"))
1179
+ end
1180
+ Watir.tag_to_class[:abbr] = HTMLElement
1181
+
1182
+ # @return [HTMLElement]
1183
+ def address(*args)
1184
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "address"))
1185
+ end
1186
+ # @return [HTMLElementCollection]
1187
+ def addresses(*args)
1188
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "address"))
1189
+ end
1190
+ Watir.tag_to_class[:address] = HTMLElement
1191
+
1192
+ # @return [Area]
1193
+ def area(*args)
1194
+ Area.new(self, extract_selector(args).merge(tag_name: "area"))
1195
+ end
1196
+ # @return [AreaCollection]
1197
+ def areas(*args)
1198
+ AreaCollection.new(self, extract_selector(args).merge(tag_name: "area"))
1199
+ end
1200
+ Watir.tag_to_class[:area] = Area
1201
+
1202
+ # @return [HTMLElement]
1203
+ def article(*args)
1204
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "article"))
1205
+ end
1206
+ # @return [HTMLElementCollection]
1207
+ def articles(*args)
1208
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "article"))
1209
+ end
1210
+ Watir.tag_to_class[:article] = HTMLElement
1211
+
1212
+ # @return [HTMLElement]
1213
+ def aside(*args)
1214
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "aside"))
1215
+ end
1216
+ # @return [HTMLElementCollection]
1217
+ def asides(*args)
1218
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "aside"))
1219
+ end
1220
+ Watir.tag_to_class[:aside] = HTMLElement
1221
+
1222
+ # @return [Audio]
1223
+ def audio(*args)
1224
+ Audio.new(self, extract_selector(args).merge(tag_name: "audio"))
1225
+ end
1226
+ # @return [AudioCollection]
1227
+ def audios(*args)
1228
+ AudioCollection.new(self, extract_selector(args).merge(tag_name: "audio"))
1229
+ end
1230
+ Watir.tag_to_class[:audio] = Audio
1231
+
1232
+ # @return [HTMLElement]
1233
+ def b(*args)
1234
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "b"))
1235
+ end
1236
+ # @return [HTMLElementCollection]
1237
+ def bs(*args)
1238
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "b"))
1239
+ end
1240
+ Watir.tag_to_class[:b] = HTMLElement
1241
+
1242
+ # @return [Base]
1243
+ def base(*args)
1244
+ Base.new(self, extract_selector(args).merge(tag_name: "base"))
1245
+ end
1246
+ # @return [BaseCollection]
1247
+ def bases(*args)
1248
+ BaseCollection.new(self, extract_selector(args).merge(tag_name: "base"))
1249
+ end
1250
+ Watir.tag_to_class[:base] = Base
1251
+
1252
+ # @return [HTMLElement]
1253
+ def bdi(*args)
1254
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "bdi"))
1255
+ end
1256
+ # @return [HTMLElementCollection]
1257
+ def bdis(*args)
1258
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "bdi"))
1259
+ end
1260
+ Watir.tag_to_class[:bdi] = HTMLElement
1261
+
1262
+ # @return [HTMLElement]
1263
+ def bdo(*args)
1264
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "bdo"))
1265
+ end
1266
+ # @return [HTMLElementCollection]
1267
+ def bdos(*args)
1268
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "bdo"))
1269
+ end
1270
+ Watir.tag_to_class[:bdo] = HTMLElement
1271
+
1272
+ # @return [Quote]
1273
+ def blockquote(*args)
1274
+ Quote.new(self, extract_selector(args).merge(tag_name: "blockquote"))
1275
+ end
1276
+ # @return [QuoteCollection]
1277
+ def blockquotes(*args)
1278
+ QuoteCollection.new(self, extract_selector(args).merge(tag_name: "blockquote"))
1279
+ end
1280
+ Watir.tag_to_class[:blockquote] = Quote
1281
+
1282
+ # @return [Body]
1283
+ def body(*args)
1284
+ Body.new(self, extract_selector(args).merge(tag_name: "body"))
1285
+ end
1286
+ # @return [BodyCollection]
1287
+ def bodys(*args)
1288
+ BodyCollection.new(self, extract_selector(args).merge(tag_name: "body"))
1289
+ end
1290
+ Watir.tag_to_class[:body] = Body
1291
+
1292
+ # @return [BR]
1293
+ def br(*args)
1294
+ BR.new(self, extract_selector(args).merge(tag_name: "br"))
1295
+ end
1296
+ # @return [BRCollection]
1297
+ def brs(*args)
1298
+ BRCollection.new(self, extract_selector(args).merge(tag_name: "br"))
1299
+ end
1300
+ Watir.tag_to_class[:br] = BR
1301
+
1302
+ # @return [Button]
1303
+ def button(*args)
1304
+ Button.new(self, extract_selector(args).merge(tag_name: "button"))
1305
+ end
1306
+ # @return [ButtonCollection]
1307
+ def buttons(*args)
1308
+ ButtonCollection.new(self, extract_selector(args).merge(tag_name: "button"))
1309
+ end
1310
+ Watir.tag_to_class[:button] = Button
1311
+
1312
+ # @return [Canvas]
1313
+ def canvas(*args)
1314
+ Canvas.new(self, extract_selector(args).merge(tag_name: "canvas"))
1315
+ end
1316
+ # @return [CanvasCollection]
1317
+ def canvases(*args)
1318
+ CanvasCollection.new(self, extract_selector(args).merge(tag_name: "canvas"))
1319
+ end
1320
+ Watir.tag_to_class[:canvas] = Canvas
1321
+
1322
+ # @return [TableCaption]
1323
+ def caption(*args)
1324
+ TableCaption.new(self, extract_selector(args).merge(tag_name: "caption"))
1325
+ end
1326
+ # @return [TableCaptionCollection]
1327
+ def captions(*args)
1328
+ TableCaptionCollection.new(self, extract_selector(args).merge(tag_name: "caption"))
1329
+ end
1330
+ Watir.tag_to_class[:caption] = TableCaption
1331
+
1332
+ # @return [HTMLElement]
1333
+ def cite(*args)
1334
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "cite"))
1335
+ end
1336
+ # @return [HTMLElementCollection]
1337
+ def cites(*args)
1338
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "cite"))
1339
+ end
1340
+ Watir.tag_to_class[:cite] = HTMLElement
1341
+
1342
+ # @return [HTMLElement]
1343
+ def code(*args)
1344
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "code"))
1345
+ end
1346
+ # @return [HTMLElementCollection]
1347
+ def codes(*args)
1348
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "code"))
1349
+ end
1350
+ Watir.tag_to_class[:code] = HTMLElement
1351
+
1352
+ # @return [TableCol]
1353
+ def col(*args)
1354
+ TableCol.new(self, extract_selector(args).merge(tag_name: "col"))
1355
+ end
1356
+ # @return [TableColCollection]
1357
+ def cols(*args)
1358
+ TableColCollection.new(self, extract_selector(args).merge(tag_name: "col"))
1359
+ end
1360
+ Watir.tag_to_class[:col] = TableCol
1361
+
1362
+ # @return [TableCol]
1363
+ def colgroup(*args)
1364
+ TableCol.new(self, extract_selector(args).merge(tag_name: "colgroup"))
1365
+ end
1366
+ # @return [TableColCollection]
1367
+ def colgroups(*args)
1368
+ TableColCollection.new(self, extract_selector(args).merge(tag_name: "colgroup"))
1369
+ end
1370
+ Watir.tag_to_class[:colgroup] = TableCol
1371
+
1372
+ # @return [Data]
1373
+ def data(*args)
1374
+ Data.new(self, extract_selector(args).merge(tag_name: "data"))
1375
+ end
1376
+ # @return [DataCollection]
1377
+ def datas(*args)
1378
+ DataCollection.new(self, extract_selector(args).merge(tag_name: "data"))
1379
+ end
1380
+ Watir.tag_to_class[:data] = Data
1381
+
1382
+ # @return [DataList]
1383
+ def datalist(*args)
1384
+ DataList.new(self, extract_selector(args).merge(tag_name: "datalist"))
1385
+ end
1386
+ # @return [DataListCollection]
1387
+ def datalists(*args)
1388
+ DataListCollection.new(self, extract_selector(args).merge(tag_name: "datalist"))
1389
+ end
1390
+ Watir.tag_to_class[:datalist] = DataList
1391
+
1392
+ # @return [HTMLElement]
1393
+ def dd(*args)
1394
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "dd"))
1395
+ end
1396
+ # @return [HTMLElementCollection]
1397
+ def dds(*args)
1398
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "dd"))
1399
+ end
1400
+ Watir.tag_to_class[:dd] = HTMLElement
1401
+
1402
+ # @return [Mod]
1403
+ def del(*args)
1404
+ Mod.new(self, extract_selector(args).merge(tag_name: "del"))
1405
+ end
1406
+ # @return [ModCollection]
1407
+ def dels(*args)
1408
+ ModCollection.new(self, extract_selector(args).merge(tag_name: "del"))
1409
+ end
1410
+ Watir.tag_to_class[:del] = Mod
1411
+
1412
+ # @return [Details]
1413
+ def details(*args)
1414
+ Details.new(self, extract_selector(args).merge(tag_name: "details"))
1415
+ end
1416
+ # @return [DetailsCollection]
1417
+ def detailses(*args)
1418
+ DetailsCollection.new(self, extract_selector(args).merge(tag_name: "details"))
1419
+ end
1420
+ Watir.tag_to_class[:details] = Details
1421
+
1422
+ # @return [HTMLElement]
1423
+ def dfn(*args)
1424
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "dfn"))
1425
+ end
1426
+ # @return [HTMLElementCollection]
1427
+ def dfns(*args)
1428
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "dfn"))
1429
+ end
1430
+ Watir.tag_to_class[:dfn] = HTMLElement
1431
+
1432
+ # @return [Dialog]
1433
+ def dialog(*args)
1434
+ Dialog.new(self, extract_selector(args).merge(tag_name: "dialog"))
1435
+ end
1436
+ # @return [DialogCollection]
1437
+ def dialogs(*args)
1438
+ DialogCollection.new(self, extract_selector(args).merge(tag_name: "dialog"))
1439
+ end
1440
+ Watir.tag_to_class[:dialog] = Dialog
1441
+
1442
+ # @return [Div]
1443
+ def div(*args)
1444
+ Div.new(self, extract_selector(args).merge(tag_name: "div"))
1445
+ end
1446
+ # @return [DivCollection]
1447
+ def divs(*args)
1448
+ DivCollection.new(self, extract_selector(args).merge(tag_name: "div"))
1449
+ end
1450
+ Watir.tag_to_class[:div] = Div
1451
+
1452
+ # @return [DList]
1453
+ def dl(*args)
1454
+ DList.new(self, extract_selector(args).merge(tag_name: "dl"))
1455
+ end
1456
+ # @return [DListCollection]
1457
+ def dls(*args)
1458
+ DListCollection.new(self, extract_selector(args).merge(tag_name: "dl"))
1459
+ end
1460
+ Watir.tag_to_class[:dl] = DList
1461
+
1462
+ # @return [HTMLElement]
1463
+ def dt(*args)
1464
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "dt"))
1465
+ end
1466
+ # @return [HTMLElementCollection]
1467
+ def dts(*args)
1468
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "dt"))
1469
+ end
1470
+ Watir.tag_to_class[:dt] = HTMLElement
1471
+
1472
+ # @return [HTMLElement]
1473
+ def em(*args)
1474
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "em"))
1475
+ end
1476
+ # @return [HTMLElementCollection]
1477
+ def ems(*args)
1478
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "em"))
1479
+ end
1480
+ Watir.tag_to_class[:em] = HTMLElement
1481
+
1482
+ # @return [Embed]
1483
+ def embed(*args)
1484
+ Embed.new(self, extract_selector(args).merge(tag_name: "embed"))
1485
+ end
1486
+ # @return [EmbedCollection]
1487
+ def embeds(*args)
1488
+ EmbedCollection.new(self, extract_selector(args).merge(tag_name: "embed"))
1489
+ end
1490
+ Watir.tag_to_class[:embed] = Embed
1491
+
1492
+ # @return [FieldSet]
1493
+ def fieldset(*args)
1494
+ FieldSet.new(self, extract_selector(args).merge(tag_name: "fieldset"))
1495
+ end
1496
+ # @return [FieldSetCollection]
1497
+ def fieldsets(*args)
1498
+ FieldSetCollection.new(self, extract_selector(args).merge(tag_name: "fieldset"))
1499
+ end
1500
+ Watir.tag_to_class[:fieldset] = FieldSet
1501
+
1502
+ # @return [HTMLElement]
1503
+ def figcaption(*args)
1504
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "figcaption"))
1505
+ end
1506
+ # @return [HTMLElementCollection]
1507
+ def figcaptions(*args)
1508
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "figcaption"))
1509
+ end
1510
+ Watir.tag_to_class[:figcaption] = HTMLElement
1511
+
1512
+ # @return [HTMLElement]
1513
+ def figure(*args)
1514
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "figure"))
1515
+ end
1516
+ # @return [HTMLElementCollection]
1517
+ def figures(*args)
1518
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "figure"))
1519
+ end
1520
+ Watir.tag_to_class[:figure] = HTMLElement
1521
+
1522
+ # @return [HTMLElement]
1523
+ def footer(*args)
1524
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "footer"))
1525
+ end
1526
+ # @return [HTMLElementCollection]
1527
+ def footers(*args)
1528
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "footer"))
1529
+ end
1530
+ Watir.tag_to_class[:footer] = HTMLElement
1531
+
1532
+ # @return [Form]
1533
+ def form(*args)
1534
+ Form.new(self, extract_selector(args).merge(tag_name: "form"))
1535
+ end
1536
+ # @return [FormCollection]
1537
+ def forms(*args)
1538
+ FormCollection.new(self, extract_selector(args).merge(tag_name: "form"))
1539
+ end
1540
+ Watir.tag_to_class[:form] = Form
1541
+
1542
+ # @return [FrameSet]
1543
+ def frameset(*args)
1544
+ FrameSet.new(self, extract_selector(args).merge(tag_name: "frameset"))
1545
+ end
1546
+ # @return [FrameSetCollection]
1547
+ def framesets(*args)
1548
+ FrameSetCollection.new(self, extract_selector(args).merge(tag_name: "frameset"))
1549
+ end
1550
+ Watir.tag_to_class[:frameset] = FrameSet
1551
+
1552
+ # @return [Heading]
1553
+ def h1(*args)
1554
+ Heading.new(self, extract_selector(args).merge(tag_name: "h1"))
1555
+ end
1556
+ # @return [HeadingCollection]
1557
+ def h1s(*args)
1558
+ HeadingCollection.new(self, extract_selector(args).merge(tag_name: "h1"))
1559
+ end
1560
+ Watir.tag_to_class[:h1] = Heading
1561
+
1562
+ # @return [Heading]
1563
+ def h2(*args)
1564
+ Heading.new(self, extract_selector(args).merge(tag_name: "h2"))
1565
+ end
1566
+ # @return [HeadingCollection]
1567
+ def h2s(*args)
1568
+ HeadingCollection.new(self, extract_selector(args).merge(tag_name: "h2"))
1569
+ end
1570
+ Watir.tag_to_class[:h2] = Heading
1571
+
1572
+ # @return [Heading]
1573
+ def h3(*args)
1574
+ Heading.new(self, extract_selector(args).merge(tag_name: "h3"))
1575
+ end
1576
+ # @return [HeadingCollection]
1577
+ def h3s(*args)
1578
+ HeadingCollection.new(self, extract_selector(args).merge(tag_name: "h3"))
1579
+ end
1580
+ Watir.tag_to_class[:h3] = Heading
1581
+
1582
+ # @return [Heading]
1583
+ def h4(*args)
1584
+ Heading.new(self, extract_selector(args).merge(tag_name: "h4"))
1585
+ end
1586
+ # @return [HeadingCollection]
1587
+ def h4s(*args)
1588
+ HeadingCollection.new(self, extract_selector(args).merge(tag_name: "h4"))
1589
+ end
1590
+ Watir.tag_to_class[:h4] = Heading
1591
+
1592
+ # @return [Heading]
1593
+ def h5(*args)
1594
+ Heading.new(self, extract_selector(args).merge(tag_name: "h5"))
1595
+ end
1596
+ # @return [HeadingCollection]
1597
+ def h5s(*args)
1598
+ HeadingCollection.new(self, extract_selector(args).merge(tag_name: "h5"))
1599
+ end
1600
+ Watir.tag_to_class[:h5] = Heading
1601
+
1602
+ # @return [Heading]
1603
+ def h6(*args)
1604
+ Heading.new(self, extract_selector(args).merge(tag_name: "h6"))
1605
+ end
1606
+ # @return [HeadingCollection]
1607
+ def h6s(*args)
1608
+ HeadingCollection.new(self, extract_selector(args).merge(tag_name: "h6"))
1609
+ end
1610
+ Watir.tag_to_class[:h6] = Heading
1611
+
1612
+ # @return [Head]
1613
+ def head(*args)
1614
+ Head.new(self, extract_selector(args).merge(tag_name: "head"))
1615
+ end
1616
+ # @return [HeadCollection]
1617
+ def heads(*args)
1618
+ HeadCollection.new(self, extract_selector(args).merge(tag_name: "head"))
1619
+ end
1620
+ Watir.tag_to_class[:head] = Head
1621
+
1622
+ # @return [HTMLElement]
1623
+ def header(*args)
1624
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "header"))
1625
+ end
1626
+ # @return [HTMLElementCollection]
1627
+ def headers(*args)
1628
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "header"))
1629
+ end
1630
+ Watir.tag_to_class[:header] = HTMLElement
1631
+
1632
+ # @return [HTMLElement]
1633
+ def hgroup(*args)
1634
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "hgroup"))
1635
+ end
1636
+ # @return [HTMLElementCollection]
1637
+ def hgroups(*args)
1638
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "hgroup"))
1639
+ end
1640
+ Watir.tag_to_class[:hgroup] = HTMLElement
1641
+
1642
+ # @return [HR]
1643
+ def hr(*args)
1644
+ HR.new(self, extract_selector(args).merge(tag_name: "hr"))
1645
+ end
1646
+ # @return [HRCollection]
1647
+ def hrs(*args)
1648
+ HRCollection.new(self, extract_selector(args).merge(tag_name: "hr"))
1649
+ end
1650
+ Watir.tag_to_class[:hr] = HR
1651
+
1652
+ # @return [Html]
1653
+ def html(*args)
1654
+ Html.new(self, extract_selector(args).merge(tag_name: "html"))
1655
+ end
1656
+ # @return [HtmlCollection]
1657
+ def htmls(*args)
1658
+ HtmlCollection.new(self, extract_selector(args).merge(tag_name: "html"))
1659
+ end
1660
+ Watir.tag_to_class[:html] = Html
1661
+
1662
+ # @return [HTMLElement]
1663
+ def i(*args)
1664
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "i"))
1665
+ end
1666
+ # @return [HTMLElementCollection]
1667
+ def is(*args)
1668
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "i"))
1669
+ end
1670
+ Watir.tag_to_class[:i] = HTMLElement
1671
+
1672
+ # @return [IFrame]
1673
+ def iframe(*args)
1674
+ IFrame.new(self, extract_selector(args).merge(tag_name: "iframe"))
1675
+ end
1676
+ # @return [IFrameCollection]
1677
+ def iframes(*args)
1678
+ IFrameCollection.new(self, extract_selector(args).merge(tag_name: "iframe"))
1679
+ end
1680
+ Watir.tag_to_class[:iframe] = IFrame
1681
+
1682
+ # @return [Image]
1683
+ def img(*args)
1684
+ Image.new(self, extract_selector(args).merge(tag_name: "img"))
1685
+ end
1686
+ # @return [ImageCollection]
1687
+ def imgs(*args)
1688
+ ImageCollection.new(self, extract_selector(args).merge(tag_name: "img"))
1689
+ end
1690
+ Watir.tag_to_class[:img] = Image
1691
+
1692
+ # @return [Input]
1693
+ def input(*args)
1694
+ Input.new(self, extract_selector(args).merge(tag_name: "input"))
1695
+ end
1696
+ # @return [InputCollection]
1697
+ def inputs(*args)
1698
+ InputCollection.new(self, extract_selector(args).merge(tag_name: "input"))
1699
+ end
1700
+ Watir.tag_to_class[:input] = Input
1701
+
1702
+ # @return [Mod]
1703
+ def ins(*args)
1704
+ Mod.new(self, extract_selector(args).merge(tag_name: "ins"))
1705
+ end
1706
+ # @return [ModCollection]
1707
+ def inses(*args)
1708
+ ModCollection.new(self, extract_selector(args).merge(tag_name: "ins"))
1709
+ end
1710
+ Watir.tag_to_class[:ins] = Mod
1711
+
1712
+ # @return [HTMLElement]
1713
+ def kbd(*args)
1714
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "kbd"))
1715
+ end
1716
+ # @return [HTMLElementCollection]
1717
+ def kbds(*args)
1718
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "kbd"))
1719
+ end
1720
+ Watir.tag_to_class[:kbd] = HTMLElement
1721
+
1722
+ # @return [Keygen]
1723
+ def keygen(*args)
1724
+ Keygen.new(self, extract_selector(args).merge(tag_name: "keygen"))
1725
+ end
1726
+ # @return [KeygenCollection]
1727
+ def keygens(*args)
1728
+ KeygenCollection.new(self, extract_selector(args).merge(tag_name: "keygen"))
1729
+ end
1730
+ Watir.tag_to_class[:keygen] = Keygen
1731
+
1732
+ # @return [Label]
1733
+ def label(*args)
1734
+ Label.new(self, extract_selector(args).merge(tag_name: "label"))
1735
+ end
1736
+ # @return [LabelCollection]
1737
+ def labels(*args)
1738
+ LabelCollection.new(self, extract_selector(args).merge(tag_name: "label"))
1739
+ end
1740
+ Watir.tag_to_class[:label] = Label
1741
+
1742
+ # @return [Legend]
1743
+ def legend(*args)
1744
+ Legend.new(self, extract_selector(args).merge(tag_name: "legend"))
1745
+ end
1746
+ # @return [LegendCollection]
1747
+ def legends(*args)
1748
+ LegendCollection.new(self, extract_selector(args).merge(tag_name: "legend"))
1749
+ end
1750
+ Watir.tag_to_class[:legend] = Legend
1751
+
1752
+ # @return [LI]
1753
+ def li(*args)
1754
+ LI.new(self, extract_selector(args).merge(tag_name: "li"))
1755
+ end
1756
+ # @return [LICollection]
1757
+ def lis(*args)
1758
+ LICollection.new(self, extract_selector(args).merge(tag_name: "li"))
1759
+ end
1760
+ Watir.tag_to_class[:li] = LI
1761
+
1762
+ # @return [HTMLElement]
1763
+ def main(*args)
1764
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "main"))
1765
+ end
1766
+ # @return [HTMLElementCollection]
1767
+ def mains(*args)
1768
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "main"))
1769
+ end
1770
+ Watir.tag_to_class[:main] = HTMLElement
1771
+
1772
+ # @return [Map]
1773
+ def map(*args)
1774
+ Map.new(self, extract_selector(args).merge(tag_name: "map"))
1775
+ end
1776
+ # @return [MapCollection]
1777
+ def maps(*args)
1778
+ MapCollection.new(self, extract_selector(args).merge(tag_name: "map"))
1779
+ end
1780
+ Watir.tag_to_class[:map] = Map
1781
+
1782
+ # @return [HTMLElement]
1783
+ def mark(*args)
1784
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "mark"))
1785
+ end
1786
+ # @return [HTMLElementCollection]
1787
+ def marks(*args)
1788
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "mark"))
1789
+ end
1790
+ Watir.tag_to_class[:mark] = HTMLElement
1791
+
1792
+ # @return [Menu]
1793
+ def menu(*args)
1794
+ Menu.new(self, extract_selector(args).merge(tag_name: "menu"))
1795
+ end
1796
+ # @return [MenuCollection]
1797
+ def menus(*args)
1798
+ MenuCollection.new(self, extract_selector(args).merge(tag_name: "menu"))
1799
+ end
1800
+ Watir.tag_to_class[:menu] = Menu
1801
+
1802
+ # @return [MenuItem]
1803
+ def menuitem(*args)
1804
+ MenuItem.new(self, extract_selector(args).merge(tag_name: "menuitem"))
1805
+ end
1806
+ # @return [MenuItemCollection]
1807
+ def menuitems(*args)
1808
+ MenuItemCollection.new(self, extract_selector(args).merge(tag_name: "menuitem"))
1809
+ end
1810
+ Watir.tag_to_class[:menuitem] = MenuItem
1811
+
1812
+ # @return [Meta]
1813
+ def meta(*args)
1814
+ Meta.new(self, extract_selector(args).merge(tag_name: "meta"))
1815
+ end
1816
+ # @return [MetaCollection]
1817
+ def metas(*args)
1818
+ MetaCollection.new(self, extract_selector(args).merge(tag_name: "meta"))
1819
+ end
1820
+ Watir.tag_to_class[:meta] = Meta
1821
+
1822
+ # @return [Meter]
1823
+ def meter(*args)
1824
+ Meter.new(self, extract_selector(args).merge(tag_name: "meter"))
1825
+ end
1826
+ # @return [MeterCollection]
1827
+ def meters(*args)
1828
+ MeterCollection.new(self, extract_selector(args).merge(tag_name: "meter"))
1829
+ end
1830
+ Watir.tag_to_class[:meter] = Meter
1831
+
1832
+ # @return [HTMLElement]
1833
+ def nav(*args)
1834
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "nav"))
1835
+ end
1836
+ # @return [HTMLElementCollection]
1837
+ def navs(*args)
1838
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "nav"))
1839
+ end
1840
+ Watir.tag_to_class[:nav] = HTMLElement
1841
+
1842
+ # @return [HTMLElement]
1843
+ def noscript(*args)
1844
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "noscript"))
1845
+ end
1846
+ # @return [HTMLElementCollection]
1847
+ def noscripts(*args)
1848
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "noscript"))
1849
+ end
1850
+ Watir.tag_to_class[:noscript] = HTMLElement
1851
+
1852
+ # @return [Object]
1853
+ def object(*args)
1854
+ Object.new(self, extract_selector(args).merge(tag_name: "object"))
1855
+ end
1856
+ # @return [ObjectCollection]
1857
+ def objects(*args)
1858
+ ObjectCollection.new(self, extract_selector(args).merge(tag_name: "object"))
1859
+ end
1860
+ Watir.tag_to_class[:object] = Object
1861
+
1862
+ # @return [OList]
1863
+ def ol(*args)
1864
+ OList.new(self, extract_selector(args).merge(tag_name: "ol"))
1865
+ end
1866
+ # @return [OListCollection]
1867
+ def ols(*args)
1868
+ OListCollection.new(self, extract_selector(args).merge(tag_name: "ol"))
1869
+ end
1870
+ Watir.tag_to_class[:ol] = OList
1871
+
1872
+ # @return [OptGroup]
1873
+ def optgroup(*args)
1874
+ OptGroup.new(self, extract_selector(args).merge(tag_name: "optgroup"))
1875
+ end
1876
+ # @return [OptGroupCollection]
1877
+ def optgroups(*args)
1878
+ OptGroupCollection.new(self, extract_selector(args).merge(tag_name: "optgroup"))
1879
+ end
1880
+ Watir.tag_to_class[:optgroup] = OptGroup
1881
+
1882
+ # @return [Option]
1883
+ def option(*args)
1884
+ Option.new(self, extract_selector(args).merge(tag_name: "option"))
1885
+ end
1886
+ # @return [OptionCollection]
1887
+ def options(*args)
1888
+ OptionCollection.new(self, extract_selector(args).merge(tag_name: "option"))
1889
+ end
1890
+ Watir.tag_to_class[:option] = Option
1891
+
1892
+ # @return [Output]
1893
+ def output(*args)
1894
+ Output.new(self, extract_selector(args).merge(tag_name: "output"))
1895
+ end
1896
+ # @return [OutputCollection]
1897
+ def outputs(*args)
1898
+ OutputCollection.new(self, extract_selector(args).merge(tag_name: "output"))
1899
+ end
1900
+ Watir.tag_to_class[:output] = Output
1901
+
1902
+ # @return [Paragraph]
1903
+ def p(*args)
1904
+ Paragraph.new(self, extract_selector(args).merge(tag_name: "p"))
1905
+ end
1906
+ # @return [ParagraphCollection]
1907
+ def ps(*args)
1908
+ ParagraphCollection.new(self, extract_selector(args).merge(tag_name: "p"))
1909
+ end
1910
+ Watir.tag_to_class[:p] = Paragraph
1911
+
1912
+ # @return [Param]
1913
+ def param(*args)
1914
+ Param.new(self, extract_selector(args).merge(tag_name: "param"))
1915
+ end
1916
+ # @return [ParamCollection]
1917
+ def params(*args)
1918
+ ParamCollection.new(self, extract_selector(args).merge(tag_name: "param"))
1919
+ end
1920
+ Watir.tag_to_class[:param] = Param
1921
+
1922
+ # @return [Pre]
1923
+ def pre(*args)
1924
+ Pre.new(self, extract_selector(args).merge(tag_name: "pre"))
1925
+ end
1926
+ # @return [PreCollection]
1927
+ def pres(*args)
1928
+ PreCollection.new(self, extract_selector(args).merge(tag_name: "pre"))
1929
+ end
1930
+ Watir.tag_to_class[:pre] = Pre
1931
+
1932
+ # @return [Progress]
1933
+ def progress(*args)
1934
+ Progress.new(self, extract_selector(args).merge(tag_name: "progress"))
1935
+ end
1936
+ # @return [ProgressCollection]
1937
+ def progresses(*args)
1938
+ ProgressCollection.new(self, extract_selector(args).merge(tag_name: "progress"))
1939
+ end
1940
+ Watir.tag_to_class[:progress] = Progress
1941
+
1942
+ # @return [Quote]
1943
+ def q(*args)
1944
+ Quote.new(self, extract_selector(args).merge(tag_name: "q"))
1945
+ end
1946
+ # @return [QuoteCollection]
1947
+ def qs(*args)
1948
+ QuoteCollection.new(self, extract_selector(args).merge(tag_name: "q"))
1949
+ end
1950
+ Watir.tag_to_class[:q] = Quote
1951
+
1952
+ # @return [HTMLElement]
1953
+ def rp(*args)
1954
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "rp"))
1955
+ end
1956
+ # @return [HTMLElementCollection]
1957
+ def rps(*args)
1958
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "rp"))
1959
+ end
1960
+ Watir.tag_to_class[:rp] = HTMLElement
1961
+
1962
+ # @return [HTMLElement]
1963
+ def rt(*args)
1964
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "rt"))
1965
+ end
1966
+ # @return [HTMLElementCollection]
1967
+ def rts(*args)
1968
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "rt"))
1969
+ end
1970
+ Watir.tag_to_class[:rt] = HTMLElement
1971
+
1972
+ # @return [HTMLElement]
1973
+ def ruby(*args)
1974
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "ruby"))
1975
+ end
1976
+ # @return [HTMLElementCollection]
1977
+ def rubies(*args)
1978
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "ruby"))
1979
+ end
1980
+ Watir.tag_to_class[:ruby] = HTMLElement
1981
+
1982
+ # @return [HTMLElement]
1983
+ def s(*args)
1984
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "s"))
1985
+ end
1986
+ # @return [HTMLElementCollection]
1987
+ def ss(*args)
1988
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "s"))
1989
+ end
1990
+ Watir.tag_to_class[:s] = HTMLElement
1991
+
1992
+ # @return [HTMLElement]
1993
+ def samp(*args)
1994
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "samp"))
1995
+ end
1996
+ # @return [HTMLElementCollection]
1997
+ def samps(*args)
1998
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "samp"))
1999
+ end
2000
+ Watir.tag_to_class[:samp] = HTMLElement
2001
+
2002
+ # @return [Script]
2003
+ def script(*args)
2004
+ Script.new(self, extract_selector(args).merge(tag_name: "script"))
2005
+ end
2006
+ # @return [ScriptCollection]
2007
+ def scripts(*args)
2008
+ ScriptCollection.new(self, extract_selector(args).merge(tag_name: "script"))
2009
+ end
2010
+ Watir.tag_to_class[:script] = Script
2011
+
2012
+ # @return [HTMLElement]
2013
+ def section(*args)
2014
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "section"))
2015
+ end
2016
+ # @return [HTMLElementCollection]
2017
+ def sections(*args)
2018
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "section"))
2019
+ end
2020
+ Watir.tag_to_class[:section] = HTMLElement
2021
+
2022
+ # @return [Select]
2023
+ def select(*args)
2024
+ Select.new(self, extract_selector(args).merge(tag_name: "select"))
2025
+ end
2026
+ # @return [SelectCollection]
2027
+ def selects(*args)
2028
+ SelectCollection.new(self, extract_selector(args).merge(tag_name: "select"))
2029
+ end
2030
+ Watir.tag_to_class[:select] = Select
2031
+
2032
+ # @return [HTMLElement]
2033
+ def small(*args)
2034
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "small"))
2035
+ end
2036
+ # @return [HTMLElementCollection]
2037
+ def smalls(*args)
2038
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "small"))
2039
+ end
2040
+ Watir.tag_to_class[:small] = HTMLElement
2041
+
2042
+ # @return [Source]
2043
+ def source(*args)
2044
+ Source.new(self, extract_selector(args).merge(tag_name: "source"))
2045
+ end
2046
+ # @return [SourceCollection]
2047
+ def sources(*args)
2048
+ SourceCollection.new(self, extract_selector(args).merge(tag_name: "source"))
2049
+ end
2050
+ Watir.tag_to_class[:source] = Source
2051
+
2052
+ # @return [Span]
2053
+ def span(*args)
2054
+ Span.new(self, extract_selector(args).merge(tag_name: "span"))
2055
+ end
2056
+ # @return [SpanCollection]
2057
+ def spans(*args)
2058
+ SpanCollection.new(self, extract_selector(args).merge(tag_name: "span"))
2059
+ end
2060
+ Watir.tag_to_class[:span] = Span
2061
+
2062
+ # @return [HTMLElement]
2063
+ def strong(*args)
2064
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "strong"))
2065
+ end
2066
+ # @return [HTMLElementCollection]
2067
+ def strongs(*args)
2068
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "strong"))
2069
+ end
2070
+ Watir.tag_to_class[:strong] = HTMLElement
2071
+
2072
+ # @return [Style]
2073
+ def style(*args)
2074
+ Style.new(self, extract_selector(args).merge(tag_name: "style"))
2075
+ end
2076
+ # @return [StyleCollection]
2077
+ def styles(*args)
2078
+ StyleCollection.new(self, extract_selector(args).merge(tag_name: "style"))
2079
+ end
2080
+ Watir.tag_to_class[:style] = Style
2081
+
2082
+ # @return [HTMLElement]
2083
+ def sub(*args)
2084
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "sub"))
2085
+ end
2086
+ # @return [HTMLElementCollection]
2087
+ def subs(*args)
2088
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "sub"))
2089
+ end
2090
+ Watir.tag_to_class[:sub] = HTMLElement
2091
+
2092
+ # @return [HTMLElement]
2093
+ def summary(*args)
2094
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "summary"))
2095
+ end
2096
+ # @return [HTMLElementCollection]
2097
+ def summaries(*args)
2098
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "summary"))
2099
+ end
2100
+ Watir.tag_to_class[:summary] = HTMLElement
2101
+
2102
+ # @return [HTMLElement]
2103
+ def sup(*args)
2104
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "sup"))
2105
+ end
2106
+ # @return [HTMLElementCollection]
2107
+ def sups(*args)
2108
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "sup"))
2109
+ end
2110
+ Watir.tag_to_class[:sup] = HTMLElement
2111
+
2112
+ # @return [Table]
2113
+ def table(*args)
2114
+ Table.new(self, extract_selector(args).merge(tag_name: "table"))
2115
+ end
2116
+ # @return [TableCollection]
2117
+ def tables(*args)
2118
+ TableCollection.new(self, extract_selector(args).merge(tag_name: "table"))
2119
+ end
2120
+ Watir.tag_to_class[:table] = Table
2121
+
2122
+ # @return [TableSection]
2123
+ def tbody(*args)
2124
+ TableSection.new(self, extract_selector(args).merge(tag_name: "tbody"))
2125
+ end
2126
+ # @return [TableSectionCollection]
2127
+ def tbodys(*args)
2128
+ TableSectionCollection.new(self, extract_selector(args).merge(tag_name: "tbody"))
2129
+ end
2130
+ Watir.tag_to_class[:tbody] = TableSection
2131
+
2132
+ # @return [TableDataCell]
2133
+ def td(*args)
2134
+ TableDataCell.new(self, extract_selector(args).merge(tag_name: "td"))
2135
+ end
2136
+ # @return [TableDataCellCollection]
2137
+ def tds(*args)
2138
+ TableDataCellCollection.new(self, extract_selector(args).merge(tag_name: "td"))
2139
+ end
2140
+ Watir.tag_to_class[:td] = TableDataCell
2141
+
2142
+ # @return [Template]
2143
+ def template(*args)
2144
+ Template.new(self, extract_selector(args).merge(tag_name: "template"))
2145
+ end
2146
+ # @return [TemplateCollection]
2147
+ def templates(*args)
2148
+ TemplateCollection.new(self, extract_selector(args).merge(tag_name: "template"))
2149
+ end
2150
+ Watir.tag_to_class[:template] = Template
2151
+
2152
+ # @return [TextArea]
2153
+ def textarea(*args)
2154
+ TextArea.new(self, extract_selector(args).merge(tag_name: "textarea"))
2155
+ end
2156
+ # @return [TextAreaCollection]
2157
+ def textareas(*args)
2158
+ TextAreaCollection.new(self, extract_selector(args).merge(tag_name: "textarea"))
2159
+ end
2160
+ Watir.tag_to_class[:textarea] = TextArea
2161
+
2162
+ # @return [TableSection]
2163
+ def tfoot(*args)
2164
+ TableSection.new(self, extract_selector(args).merge(tag_name: "tfoot"))
2165
+ end
2166
+ # @return [TableSectionCollection]
2167
+ def tfoots(*args)
2168
+ TableSectionCollection.new(self, extract_selector(args).merge(tag_name: "tfoot"))
2169
+ end
2170
+ Watir.tag_to_class[:tfoot] = TableSection
2171
+
2172
+ # @return [TableHeaderCell]
2173
+ def th(*args)
2174
+ TableHeaderCell.new(self, extract_selector(args).merge(tag_name: "th"))
2175
+ end
2176
+ # @return [TableHeaderCellCollection]
2177
+ def ths(*args)
2178
+ TableHeaderCellCollection.new(self, extract_selector(args).merge(tag_name: "th"))
2179
+ end
2180
+ Watir.tag_to_class[:th] = TableHeaderCell
2181
+
2182
+ # @return [TableSection]
2183
+ def thead(*args)
2184
+ TableSection.new(self, extract_selector(args).merge(tag_name: "thead"))
2185
+ end
2186
+ # @return [TableSectionCollection]
2187
+ def theads(*args)
2188
+ TableSectionCollection.new(self, extract_selector(args).merge(tag_name: "thead"))
2189
+ end
2190
+ Watir.tag_to_class[:thead] = TableSection
2191
+
2192
+ # @return [Time]
2193
+ def time(*args)
2194
+ Time.new(self, extract_selector(args).merge(tag_name: "time"))
2195
+ end
2196
+ # @return [TimeCollection]
2197
+ def times(*args)
2198
+ TimeCollection.new(self, extract_selector(args).merge(tag_name: "time"))
2199
+ end
2200
+ Watir.tag_to_class[:time] = Time
2201
+
2202
+ # @return [Title]
2203
+ def title(*args)
2204
+ Title.new(self, extract_selector(args).merge(tag_name: "title"))
2205
+ end
2206
+ # @return [TitleCollection]
2207
+ def titles(*args)
2208
+ TitleCollection.new(self, extract_selector(args).merge(tag_name: "title"))
2209
+ end
2210
+ Watir.tag_to_class[:title] = Title
2211
+
2212
+ # @return [TableRow]
2213
+ def tr(*args)
2214
+ TableRow.new(self, extract_selector(args).merge(tag_name: "tr"))
2215
+ end
2216
+ # @return [TableRowCollection]
2217
+ def trs(*args)
2218
+ TableRowCollection.new(self, extract_selector(args).merge(tag_name: "tr"))
2219
+ end
2220
+ Watir.tag_to_class[:tr] = TableRow
2221
+
2222
+ # @return [Track]
2223
+ def track(*args)
2224
+ Track.new(self, extract_selector(args).merge(tag_name: "track"))
2225
+ end
2226
+ # @return [TrackCollection]
2227
+ def tracks(*args)
2228
+ TrackCollection.new(self, extract_selector(args).merge(tag_name: "track"))
2229
+ end
2230
+ Watir.tag_to_class[:track] = Track
2231
+
2232
+ # @return [HTMLElement]
2233
+ def u(*args)
2234
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "u"))
2235
+ end
2236
+ # @return [HTMLElementCollection]
2237
+ def us(*args)
2238
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "u"))
2239
+ end
2240
+ Watir.tag_to_class[:u] = HTMLElement
2241
+
2242
+ # @return [UList]
2243
+ def ul(*args)
2244
+ UList.new(self, extract_selector(args).merge(tag_name: "ul"))
2245
+ end
2246
+ # @return [UListCollection]
2247
+ def uls(*args)
2248
+ UListCollection.new(self, extract_selector(args).merge(tag_name: "ul"))
2249
+ end
2250
+ Watir.tag_to_class[:ul] = UList
2251
+
2252
+ # @return [HTMLElement]
2253
+ def var(*args)
2254
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "var"))
2255
+ end
2256
+ # @return [HTMLElementCollection]
2257
+ def vars(*args)
2258
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "var"))
2259
+ end
2260
+ Watir.tag_to_class[:var] = HTMLElement
2261
+
2262
+ # @return [Video]
2263
+ def video(*args)
2264
+ Video.new(self, extract_selector(args).merge(tag_name: "video"))
2265
+ end
2266
+ # @return [VideoCollection]
2267
+ def videos(*args)
2268
+ VideoCollection.new(self, extract_selector(args).merge(tag_name: "video"))
2269
+ end
2270
+ Watir.tag_to_class[:video] = Video
2271
+
2272
+ # @return [HTMLElement]
2273
+ def wbr(*args)
2274
+ HTMLElement.new(self, extract_selector(args).merge(tag_name: "wbr"))
2275
+ end
2276
+ # @return [HTMLElementCollection]
2277
+ def wbrs(*args)
2278
+ HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "wbr"))
2279
+ end
2280
+ Watir.tag_to_class[:wbr] = HTMLElement
2281
+ end # Container
2282
+ end # Watir