watir 6.17.0 → 7.0.0.beta2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (129) hide show
  1. checksums.yaml +4 -4
  2. data/.github/actions/enable-safari/action.yml +11 -0
  3. data/.github/actions/install-chrome/action.yml +12 -0
  4. data/.github/actions/setup-linux/action.yml +8 -0
  5. data/.github/workflows/tests.yml +104 -0
  6. data/.rubocop.yml +2 -7
  7. data/.rubocop_todo.yml +36 -0
  8. data/CHANGES.md +59 -0
  9. data/LICENSE +2 -2
  10. data/README.md +6 -10
  11. data/Rakefile +2 -2
  12. data/lib/watir.rb +4 -45
  13. data/lib/watir/adjacent.rb +1 -1
  14. data/lib/watir/alert.rb +4 -8
  15. data/lib/watir/attribute_helper.rb +2 -0
  16. data/lib/watir/browser.rb +20 -6
  17. data/lib/watir/capabilities.rb +79 -110
  18. data/lib/watir/cell_container.rb +4 -4
  19. data/lib/watir/container.rb +4 -26
  20. data/lib/watir/cookies.rb +2 -0
  21. data/lib/watir/element_collection.rb +21 -6
  22. data/lib/watir/elements/checkbox.rb +4 -4
  23. data/lib/watir/elements/date_field.rb +4 -4
  24. data/lib/watir/elements/date_time_field.rb +4 -4
  25. data/lib/watir/elements/element.rb +51 -59
  26. data/lib/watir/elements/file_field.rb +4 -4
  27. data/lib/watir/elements/font.rb +5 -4
  28. data/lib/watir/elements/hidden.rb +4 -4
  29. data/lib/watir/elements/html_elements.rb +444 -446
  30. data/lib/watir/elements/iframe.rb +6 -6
  31. data/lib/watir/elements/radio.rb +6 -6
  32. data/lib/watir/elements/select.rb +62 -90
  33. data/lib/watir/elements/svg_elements.rb +96 -96
  34. data/lib/watir/elements/text_field.rb +4 -4
  35. data/lib/watir/generator/base/generator.rb +4 -4
  36. data/lib/watir/generator/base/visitor.rb +0 -29
  37. data/lib/watir/generator/html/generator.rb +2 -1
  38. data/lib/watir/has_window.rb +22 -18
  39. data/lib/watir/http_client.rb +9 -0
  40. data/lib/watir/js_execution.rb +2 -2
  41. data/lib/watir/js_snippets.rb +2 -2
  42. data/lib/watir/locators.rb +6 -8
  43. data/lib/watir/locators/button/matcher.rb +0 -23
  44. data/lib/watir/locators/button/selector_builder/xpath.rb +4 -15
  45. data/lib/watir/locators/element/matcher.rb +4 -19
  46. data/lib/watir/locators/element/selector_builder.rb +3 -41
  47. data/lib/watir/locators/element/selector_builder/xpath.rb +34 -41
  48. data/lib/watir/locators/option/matcher.rb +24 -0
  49. data/lib/watir/locators/option/selector_builder.rb +8 -0
  50. data/lib/watir/locators/option/selector_builder/xpath.rb +37 -0
  51. data/lib/watir/logger.rb +4 -91
  52. data/lib/watir/radio_set.rb +5 -4
  53. data/lib/watir/row_container.rb +4 -4
  54. data/lib/watir/screenshot.rb +2 -8
  55. data/lib/watir/user_editable.rb +13 -2
  56. data/lib/watir/version.rb +1 -1
  57. data/lib/watir/wait.rb +6 -74
  58. data/lib/watir/wait/timer.rb +1 -1
  59. data/lib/watir/window.rb +24 -25
  60. data/lib/watir/window_collection.rb +79 -0
  61. data/lib/watirspec.rb +5 -2
  62. data/lib/watirspec/guards.rb +1 -1
  63. data/lib/watirspec/implementation.rb +7 -5
  64. data/lib/watirspec/runner.rb +2 -2
  65. data/lib/watirspec/server.rb +2 -2
  66. data/spec/spec_helper.rb +1 -21
  67. data/spec/unit/capabilities_spec.rb +504 -21
  68. data/spec/unit/match_elements/button_spec.rb +0 -13
  69. data/spec/unit/match_elements/element_spec.rb +55 -51
  70. data/spec/unit/match_elements/text_field_spec.rb +6 -6
  71. data/spec/unit/selector_builder/element_spec.rb +6 -23
  72. data/spec/unit/selector_builder/text_field_spec.rb +6 -7
  73. data/spec/unit/unit_helper.rb +2 -4
  74. data/spec/watirspec/after_hooks_spec.rb +23 -42
  75. data/spec/watirspec/alert_spec.rb +4 -21
  76. data/spec/watirspec/browser_spec.rb +186 -206
  77. data/spec/watirspec/cookies_spec.rb +47 -52
  78. data/spec/watirspec/drag_and_drop_spec.rb +5 -7
  79. data/spec/watirspec/elements/area_spec.rb +1 -5
  80. data/spec/watirspec/elements/button_spec.rb +4 -18
  81. data/spec/watirspec/elements/checkbox_spec.rb +10 -24
  82. data/spec/watirspec/elements/date_field_spec.rb +13 -16
  83. data/spec/watirspec/elements/date_time_field_spec.rb +14 -13
  84. data/spec/watirspec/elements/dd_spec.rb +3 -4
  85. data/spec/watirspec/elements/del_spec.rb +10 -12
  86. data/spec/watirspec/elements/div_spec.rb +45 -84
  87. data/spec/watirspec/elements/divs_spec.rb +2 -2
  88. data/spec/watirspec/elements/dl_spec.rb +4 -12
  89. data/spec/watirspec/elements/element_spec.rb +204 -181
  90. data/spec/watirspec/elements/elements_spec.rb +8 -9
  91. data/spec/watirspec/elements/filefield_spec.rb +5 -7
  92. data/spec/watirspec/elements/form_spec.rb +3 -5
  93. data/spec/watirspec/elements/forms_spec.rb +3 -5
  94. data/spec/watirspec/elements/frame_spec.rb +17 -22
  95. data/spec/watirspec/elements/iframe_spec.rb +25 -33
  96. data/spec/watirspec/elements/ins_spec.rb +10 -12
  97. data/spec/watirspec/elements/link_spec.rb +23 -23
  98. data/spec/watirspec/elements/links_spec.rb +8 -9
  99. data/spec/watirspec/elements/radio_spec.rb +11 -14
  100. data/spec/watirspec/elements/select_list_spec.rb +358 -209
  101. data/spec/watirspec/elements/span_spec.rb +12 -14
  102. data/spec/watirspec/elements/spans_spec.rb +1 -1
  103. data/spec/watirspec/elements/strong_spec.rb +1 -1
  104. data/spec/watirspec/elements/table_nesting_spec.rb +31 -34
  105. data/spec/watirspec/elements/table_spec.rb +11 -13
  106. data/spec/watirspec/elements/tbody_spec.rb +10 -12
  107. data/spec/watirspec/elements/td_spec.rb +4 -6
  108. data/spec/watirspec/elements/text_field_spec.rb +10 -12
  109. data/spec/watirspec/elements/tr_spec.rb +5 -7
  110. data/spec/watirspec/html/non_control_elements.html +8 -3
  111. data/spec/watirspec/html/special_chars.html +3 -0
  112. data/spec/watirspec/html/wait.html +5 -5
  113. data/spec/watirspec/html/window_switching.html +10 -0
  114. data/spec/watirspec/special_chars_spec.rb +10 -0
  115. data/spec/watirspec/support/rspec_matchers.rb +11 -24
  116. data/spec/watirspec/user_editable_spec.rb +26 -28
  117. data/spec/watirspec/wait_spec.rb +154 -201
  118. data/spec/watirspec/window_switching_spec.rb +359 -270
  119. data/spec/watirspec_helper.rb +52 -49
  120. data/support/doctest_helper.rb +0 -2
  121. data/watir.gemspec +4 -5
  122. metadata +30 -39
  123. data/.travis.yml +0 -87
  124. data/appveyor.yml +0 -13
  125. data/lib/watir/legacy_wait.rb +0 -123
  126. data/spec/implementation_spec.rb +0 -24
  127. data/spec/unit/container_spec.rb +0 -35
  128. data/spec/unit/logger_spec.rb +0 -81
  129. data/spec/watirspec/relaxed_locate_spec.rb +0 -109
@@ -40,12 +40,12 @@ module Watir
40
40
  end # CheckBox
41
41
 
42
42
  module Container
43
- def checkbox(*args)
44
- CheckBox.new(self, extract_selector(args).merge(tag_name: 'input', type: 'checkbox'))
43
+ def checkbox(opts = {})
44
+ CheckBox.new(self, opts.merge(tag_name: 'input', type: 'checkbox'))
45
45
  end
46
46
 
47
- def checkboxes(*args)
48
- CheckBoxCollection.new(self, extract_selector(args).merge(tag_name: 'input', type: 'checkbox'))
47
+ def checkboxes(opts = {})
48
+ CheckBoxCollection.new(self, opts.merge(tag_name: 'input', type: 'checkbox'))
49
49
  end
50
50
  end # Container
51
51
 
@@ -18,12 +18,12 @@ module Watir
18
18
  end # DateField
19
19
 
20
20
  module Container
21
- def date_field(*args)
22
- DateField.new(self, extract_selector(args).merge(tag_name: 'input', type: 'date'))
21
+ def date_field(opts = {})
22
+ DateField.new(self, opts.merge(tag_name: 'input', type: 'date'))
23
23
  end
24
24
 
25
- def date_fields(*args)
26
- DateFieldCollection.new(self, extract_selector(args).merge(tag_name: 'input', type: 'date'))
25
+ def date_fields(opts = {})
26
+ DateFieldCollection.new(self, opts.merge(tag_name: 'input', type: 'date'))
27
27
  end
28
28
  end # Container
29
29
 
@@ -18,12 +18,12 @@ module Watir
18
18
  end # DateTimeField
19
19
 
20
20
  module Container
21
- def date_time_field(*args)
22
- DateTimeField.new(self, extract_selector(args).merge(tag_name: 'input', type: 'datetime-local'))
21
+ def date_time_field(opts = {})
22
+ DateTimeField.new(self, opts.merge(tag_name: 'input', type: 'datetime-local'))
23
23
  end
24
24
 
25
- def date_time_fields(*args)
26
- DateTimeFieldCollection.new(self, extract_selector(args).merge(tag_name: 'input', type: 'datetime-local'))
25
+ def date_time_fields(opts = {})
26
+ DateTimeFieldCollection.new(self, opts.merge(tag_name: 'input', type: 'datetime-local'))
27
27
  end
28
28
  end # Container
29
29
 
@@ -8,7 +8,6 @@ module Watir
8
8
 
9
9
  include Exception
10
10
  include Container
11
- include EventuallyPresent
12
11
  include Waitable
13
12
  include Adjacent
14
13
  include JSExecution
@@ -45,11 +44,10 @@ module Watir
45
44
 
46
45
  raise ArgumentError, "invalid argument: #{selector.inspect}" unless selector.is_a? Hash
47
46
 
47
+ selector[:index] = 0 if selector.empty?
48
48
  @element = selector.delete(:element)
49
49
 
50
- if @element && !(selector.keys - %i[tag_name]).empty?
51
- Watir.logger.deprecate(':element locator to initialize a relocatable Element', '#cache=', ids: [:element_cache])
52
- end
50
+ selector = {} if @element && !(selector.keys - [:tag_name]).empty?
53
51
 
54
52
  @selector = selector
55
53
 
@@ -149,7 +147,6 @@ module Watir
149
147
  #
150
148
 
151
149
  def click(*modifiers)
152
- # TODO: Should wait_for_enabled be default, or `Button` specific behavior?
153
150
  element_call(:wait_for_enabled) do
154
151
  if modifiers.any?
155
152
  action = driver.action
@@ -166,6 +163,26 @@ module Watir
166
163
  browser.after_hooks.run
167
164
  end
168
165
 
166
+ #
167
+ # Determines the correct action based on subtype and takes it.
168
+ # Default is to click element
169
+ #
170
+
171
+ def set(*args)
172
+ subtype = to_subtype
173
+ if subtype.is_a?(Radio) && [String, Regexp].include?(args.first.class)
174
+ RadioSet.new(@query_scope, selector).set(*args)
175
+ elsif subtype.class.included_modules.include?(UserEditable) || subtype.public_methods(false).include?(:set)
176
+ subtype.set(*args)
177
+ elsif @content_editable || content_editable?
178
+ @content_editable = true
179
+ extend UserEditable
180
+ set(*args)
181
+ elsif args.empty? || args.first
182
+ click(*args)
183
+ end
184
+ end
185
+
169
186
  #
170
187
  # Simulates JavaScript click event on element.
171
188
  #
@@ -187,7 +204,10 @@ module Watir
187
204
  #
188
205
 
189
206
  def double_click
190
- element_call(:wait_for_present) { driver.action.double_click(@element).perform }
207
+ element_call(:wait_for_present) do
208
+ scroll.to
209
+ driver.action.double_click(@element).perform
210
+ end
191
211
  browser.after_hooks.run
192
212
  end
193
213
 
@@ -222,6 +242,7 @@ module Watir
222
242
 
223
243
  def right_click(*modifiers)
224
244
  element_call(:wait_for_present) do
245
+ scroll.to
225
246
  action = driver.action
226
247
  if modifiers.any?
227
248
  modifiers.each { |mod| action.key_down mod }
@@ -245,7 +266,10 @@ module Watir
245
266
  #
246
267
 
247
268
  def hover
248
- element_call(:wait_for_present) { driver.action.move_to(@element).perform }
269
+ element_call(:wait_for_present) do
270
+ scroll.to
271
+ driver.action.move_to(@element).perform
272
+ end
249
273
  end
250
274
 
251
275
  #
@@ -262,6 +286,7 @@ module Watir
262
286
  assert_is_element other
263
287
 
264
288
  value = element_call(:wait_for_present) do
289
+ scroll.to
265
290
  driver.action
266
291
  .drag_and_drop(@element, other.wd)
267
292
  .perform
@@ -283,6 +308,7 @@ module Watir
283
308
 
284
309
  def drag_and_drop_by(right_by, down_by)
285
310
  element_call(:wait_for_present) do
311
+ scroll.to
286
312
  driver.action
287
313
  .drag_and_drop_by(@element, right_by, down_by)
288
314
  .perform
@@ -376,21 +402,6 @@ module Watir
376
402
  element_call { @element == driver.switch_to.active_element }
377
403
  end
378
404
 
379
- #
380
- # Scroll until the element is in the view screen
381
- #
382
- # @example
383
- # browser.button(name: "new_user_button").scroll_into_view
384
- #
385
- # @return [Selenium::WebDriver::Point]
386
- #
387
-
388
- def scroll_into_view
389
- Watir.logger.deprecate 'Element#scroll_into_view', 'Element#scroll methods', ids: [:scroll_into_view]
390
-
391
- element_call { @element.location_once_scrolled_into_view }
392
- end
393
-
394
405
  #
395
406
  # location of element (x, y)
396
407
  #
@@ -479,20 +490,6 @@ module Watir
479
490
  @element
480
491
  end
481
492
 
482
- #
483
- # Returns true if this element is visible on the page.
484
- # Raises exception if element does not exist
485
- #
486
- # @return [Boolean]
487
- #
488
-
489
- def visible?
490
- msg = '#visible? behavior will be changing slightly, consider switching to #present? ' \
491
- '(more details: http://watir.com/element-existentialism/)'
492
- Watir.logger.warn msg, ids: [:visible_element]
493
- display_check
494
- end
495
-
496
493
  #
497
494
  # Returns true if this element is present and enabled on the page.
498
495
  #
@@ -513,10 +510,15 @@ module Watir
513
510
  #
514
511
 
515
512
  def present?
516
- display_check
513
+ assert_exists
514
+ @element.displayed?
517
515
  rescue UnknownObjectException, UnknownFrameException
518
516
  false
517
+ rescue Selenium::WebDriver::Error::StaleElementReferenceError
518
+ reset!
519
+ retry
519
520
  end
521
+ alias visible? present?
520
522
 
521
523
  #
522
524
  # Returns true if the element's center point is covered by a non-descendant element.
@@ -622,6 +624,9 @@ module Watir
622
624
  #
623
625
 
624
626
  def locate
627
+ msg = 'Can not relocate a Watir element initialized by a Selenium element'
628
+ raise LocatorException, msg if @selector.empty?
629
+
625
630
  ensure_context
626
631
  locate_in_context
627
632
  self
@@ -670,7 +675,6 @@ module Watir
670
675
  protected
671
676
 
672
677
  def wait_for_exists
673
- return assert_exists unless Watir.relaxed_locate?
674
678
  return if located? # Performance shortcut
675
679
 
676
680
  begin
@@ -683,8 +687,7 @@ module Watir
683
687
  end
684
688
 
685
689
  def wait_for_present
686
- p = present?
687
- return p if !Watir.relaxed_locate? || p
690
+ return true if present?
688
691
 
689
692
  begin
690
693
  @query_scope.wait_for_present unless @query_scope.is_a? Browser
@@ -697,8 +700,6 @@ module Watir
697
700
  end
698
701
 
699
702
  def wait_for_enabled
700
- return assert_enabled unless Watir.relaxed_locate?
701
-
702
703
  wait_for_exists
703
704
  return unless [Input, Button, Select, Option].any? { |c| is_a? c } || @content_editable
704
705
  return if enabled?
@@ -712,9 +713,6 @@ module Watir
712
713
 
713
714
  def wait_for_writable
714
715
  wait_for_enabled
715
- unless Watir.relaxed_locate?
716
- raise_writable unless !respond_to?(:readonly?) || !readonly?
717
- end
718
716
 
719
717
  return if !respond_to?(:readonly?) || !readonly?
720
718
 
@@ -734,7 +732,9 @@ module Watir
734
732
  end
735
733
 
736
734
  def ensure_context
737
- if @query_scope.is_a?(Browser) || !@query_scope.located? || @query_scope.located? && @query_scope.stale?
735
+ if @query_scope.is_a?(Browser) || !@query_scope.located? && @query_scope.is_a?(IFrame)
736
+ @query_scope.browser.locate
737
+ elsif @query_scope.located? && @query_scope.stale?
738
738
  @query_scope.locate
739
739
  end
740
740
  @query_scope.switch_to! if @query_scope.is_a?(IFrame)
@@ -780,19 +780,11 @@ module Watir
780
780
  raise TypeError, "expected Watir::Element, got #{obj.inspect}:#{obj.class}" unless obj.is_a? Element
781
781
  end
782
782
 
783
- # Removes duplication in #present? & #visible? and makes setting deprecation notice easier
784
- def display_check
785
- assert_exists
786
- @element.displayed?
787
- rescue Selenium::WebDriver::Error::StaleElementReferenceError
788
- reset!
789
- retry
790
- end
791
-
792
783
  # TODO: - this will get addressed with Watir::Executor implementation
793
784
  # rubocop:disable Metrics/AbcSize
794
785
  # rubocop:disable Metrics/MethodLength
795
786
  # rubocop:disable Metrics/CyclomaticComplexity:
787
+ # rubocop:disable Metrics/PerceivedComplexity::
796
788
  def element_call(precondition = nil, &block)
797
789
  caller = caller_locations(1, 1)[0].label
798
790
  already_locked = browser.timer.locked?
@@ -806,12 +798,12 @@ module Watir
806
798
  element_call(:wait_for_exists, &block) if precondition.nil?
807
799
  msg = e.message
808
800
  msg += '; Maybe look in an iframe?' if @query_scope.iframe.exists?
809
- custom_attributes = @locator.nil? ? [] : selector_builder.custom_attributes
801
+ custom_attributes = !defined?(@locator) || @locator.nil? ? [] : selector_builder.custom_attributes
810
802
  unless custom_attributes.empty?
811
803
  msg += "; Watir treated #{custom_attributes} as a non-HTML compliant attribute, ensure that was intended"
812
804
  end
813
805
  raise unknown_exception, msg
814
- rescue Selenium::WebDriver::Error::StaleElementReferenceError
806
+ rescue Selenium::WebDriver::Error::StaleElementReferenceError, Selenium::WebDriver::Error::NoSuchElementError
815
807
  reset!
816
808
  retry
817
809
  # TODO: - InvalidElementStateError is deprecated, so no longer calling `raise_disabled`
@@ -829,8 +821,8 @@ module Watir
829
821
  end
830
822
  # rubocop:enable Metrics/AbcSize
831
823
  # rubocop:enable Metrics/MethodLength
832
-
833
- # rubocop:enable Metrics/CyclomaticComplexity:
824
+ # rubocop:enable Metrics/CyclomaticComplexity
825
+ # rubocop:enable Metrics/PerceivedComplexity
834
826
 
835
827
  def check_condition(condition, caller)
836
828
  Watir.logger.debug "<- `Verifying precondition #{inspect}##{condition} for #{caller}`"
@@ -27,12 +27,12 @@ module Watir
27
27
  end # FileField
28
28
 
29
29
  module Container
30
- def file_field(*args)
31
- FileField.new(self, extract_selector(args).merge(tag_name: 'input', type: 'file'))
30
+ def file_field(opts = {})
31
+ FileField.new(self, opts.merge(tag_name: 'input', type: 'file'))
32
32
  end
33
33
 
34
- def file_fields(*args)
35
- FileFieldCollection.new(self, extract_selector(args).merge(tag_name: 'input', type: 'file'))
34
+ def file_fields(opts = {})
35
+ FileFieldCollection.new(self, opts.merge(tag_name: 'input', type: 'file'))
36
36
  end
37
37
  end # Container
38
38
 
@@ -2,6 +2,7 @@ module Watir
2
2
  class Font < HTMLElement
3
3
  #
4
4
  # size of font
5
+ # This is in the whatwg spec was not generated: https://html.spec.whatwg.org/#htmlfontelement
5
6
  #
6
7
  # @return [Integer]
7
8
  #
@@ -12,12 +13,12 @@ module Watir
12
13
  end # Font
13
14
 
14
15
  module Container
15
- def font(*args)
16
- Font.new(self, extract_selector(args).merge(tag_name: 'font'))
16
+ def font(opts = {})
17
+ Font.new(self, opts.merge(tag_name: 'font'))
17
18
  end
18
19
 
19
- def fonts(*args)
20
- FontCollection.new(self, extract_selector(args).merge(tag_name: 'font'))
20
+ def fonts(opts = {})
21
+ FontCollection.new(self, opts.merge(tag_name: 'font'))
21
22
  end
22
23
  end # Container
23
24
  end # Watir
@@ -10,12 +10,12 @@ module Watir
10
10
  end
11
11
 
12
12
  module Container
13
- def hidden(*args)
14
- Hidden.new(self, extract_selector(args).merge(tag_name: 'input', type: 'hidden'))
13
+ def hidden(opts = {})
14
+ Hidden.new(self, opts.merge(tag_name: 'input', type: 'hidden'))
15
15
  end
16
16
 
17
- def hiddens(*args)
18
- HiddenCollection.new(self, extract_selector(args).merge(tag_name: 'input', type: 'hidden'))
17
+ def hiddens(opts = {})
18
+ HiddenCollection.new(self, opts.merge(tag_name: 'input', type: 'hidden'))
19
19
  end
20
20
  end # Container
21
21
 
@@ -272,7 +272,6 @@ module Watir
272
272
  attribute(String, :form, :form)
273
273
  attribute(String, :label, :label)
274
274
  attribute("Boolean", :defaultselected?, :defaultSelected)
275
- attribute("Boolean", :selected?, :selected)
276
275
  attribute(String, :value, :value)
277
276
  attribute(Integer, :index, :index)
278
277
  end
@@ -468,7 +467,6 @@ module Watir
468
467
  end
469
468
 
470
469
  class Table < HTMLElement
471
- attribute(String, :caption, :caption)
472
470
  attribute(String, :tbodies, :tBodies)
473
471
  attribute(String, :align, :align)
474
472
  attribute(String, :border, :border)
@@ -871,1112 +869,1112 @@ module Watir
871
869
  module Container
872
870
 
873
871
  # @return [Anchor]
874
- def a(*args)
875
- Anchor.new(self, extract_selector(args).merge(tag_name: "a"))
872
+ def a(opts = {})
873
+ Anchor.new(self, opts.merge(tag_name: "a"))
876
874
  end
877
875
  # @return [AnchorCollection]
878
- def as(*args)
879
- AnchorCollection.new(self, extract_selector(args).merge(tag_name: "a"))
876
+ def as(opts = {})
877
+ AnchorCollection.new(self, opts.merge(tag_name: "a"))
880
878
  end
881
879
  Watir.tag_to_class[:a] = Anchor
882
880
 
883
881
  # @return [HTMLElement]
884
- def abbr(*args)
885
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "abbr"))
882
+ def abbr(opts = {})
883
+ HTMLElement.new(self, opts.merge(tag_name: "abbr"))
886
884
  end
887
885
  # @return [HTMLElementCollection]
888
- def abbrs(*args)
889
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "abbr"))
886
+ def abbrs(opts = {})
887
+ HTMLElementCollection.new(self, opts.merge(tag_name: "abbr"))
890
888
  end
891
889
  Watir.tag_to_class[:abbr] = HTMLElement
892
890
 
893
891
  # @return [HTMLElement]
894
- def address(*args)
895
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "address"))
892
+ def address(opts = {})
893
+ HTMLElement.new(self, opts.merge(tag_name: "address"))
896
894
  end
897
895
  # @return [HTMLElementCollection]
898
- def addresses(*args)
899
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "address"))
896
+ def addresses(opts = {})
897
+ HTMLElementCollection.new(self, opts.merge(tag_name: "address"))
900
898
  end
901
899
  Watir.tag_to_class[:address] = HTMLElement
902
900
 
903
901
  # @return [Area]
904
- def area(*args)
905
- Area.new(self, extract_selector(args).merge(tag_name: "area"))
902
+ def area(opts = {})
903
+ Area.new(self, opts.merge(tag_name: "area"))
906
904
  end
907
905
  # @return [AreaCollection]
908
- def areas(*args)
909
- AreaCollection.new(self, extract_selector(args).merge(tag_name: "area"))
906
+ def areas(opts = {})
907
+ AreaCollection.new(self, opts.merge(tag_name: "area"))
910
908
  end
911
909
  Watir.tag_to_class[:area] = Area
912
910
 
913
911
  # @return [HTMLElement]
914
- def article(*args)
915
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "article"))
912
+ def article(opts = {})
913
+ HTMLElement.new(self, opts.merge(tag_name: "article"))
916
914
  end
917
915
  # @return [HTMLElementCollection]
918
- def articles(*args)
919
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "article"))
916
+ def articles(opts = {})
917
+ HTMLElementCollection.new(self, opts.merge(tag_name: "article"))
920
918
  end
921
919
  Watir.tag_to_class[:article] = HTMLElement
922
920
 
923
921
  # @return [HTMLElement]
924
- def aside(*args)
925
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "aside"))
922
+ def aside(opts = {})
923
+ HTMLElement.new(self, opts.merge(tag_name: "aside"))
926
924
  end
927
925
  # @return [HTMLElementCollection]
928
- def asides(*args)
929
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "aside"))
926
+ def asides(opts = {})
927
+ HTMLElementCollection.new(self, opts.merge(tag_name: "aside"))
930
928
  end
931
929
  Watir.tag_to_class[:aside] = HTMLElement
932
930
 
933
931
  # @return [Audio]
934
- def audio(*args)
935
- Audio.new(self, extract_selector(args).merge(tag_name: "audio"))
932
+ def audio(opts = {})
933
+ Audio.new(self, opts.merge(tag_name: "audio"))
936
934
  end
937
935
  # @return [AudioCollection]
938
- def audios(*args)
939
- AudioCollection.new(self, extract_selector(args).merge(tag_name: "audio"))
936
+ def audios(opts = {})
937
+ AudioCollection.new(self, opts.merge(tag_name: "audio"))
940
938
  end
941
939
  Watir.tag_to_class[:audio] = Audio
942
940
 
943
941
  # @return [HTMLElement]
944
- def b(*args)
945
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "b"))
942
+ def b(opts = {})
943
+ HTMLElement.new(self, opts.merge(tag_name: "b"))
946
944
  end
947
945
  # @return [HTMLElementCollection]
948
- def bs(*args)
949
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "b"))
946
+ def bs(opts = {})
947
+ HTMLElementCollection.new(self, opts.merge(tag_name: "b"))
950
948
  end
951
949
  Watir.tag_to_class[:b] = HTMLElement
952
950
 
953
951
  # @return [Base]
954
- def base(*args)
955
- Base.new(self, extract_selector(args).merge(tag_name: "base"))
952
+ def base(opts = {})
953
+ Base.new(self, opts.merge(tag_name: "base"))
956
954
  end
957
955
  # @return [BaseCollection]
958
- def bases(*args)
959
- BaseCollection.new(self, extract_selector(args).merge(tag_name: "base"))
956
+ def bases(opts = {})
957
+ BaseCollection.new(self, opts.merge(tag_name: "base"))
960
958
  end
961
959
  Watir.tag_to_class[:base] = Base
962
960
 
963
961
  # @return [HTMLElement]
964
- def bdi(*args)
965
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "bdi"))
962
+ def bdi(opts = {})
963
+ HTMLElement.new(self, opts.merge(tag_name: "bdi"))
966
964
  end
967
965
  # @return [HTMLElementCollection]
968
- def bdis(*args)
969
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "bdi"))
966
+ def bdis(opts = {})
967
+ HTMLElementCollection.new(self, opts.merge(tag_name: "bdi"))
970
968
  end
971
969
  Watir.tag_to_class[:bdi] = HTMLElement
972
970
 
973
971
  # @return [HTMLElement]
974
- def bdo(*args)
975
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "bdo"))
972
+ def bdo(opts = {})
973
+ HTMLElement.new(self, opts.merge(tag_name: "bdo"))
976
974
  end
977
975
  # @return [HTMLElementCollection]
978
- def bdos(*args)
979
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "bdo"))
976
+ def bdos(opts = {})
977
+ HTMLElementCollection.new(self, opts.merge(tag_name: "bdo"))
980
978
  end
981
979
  Watir.tag_to_class[:bdo] = HTMLElement
982
980
 
983
981
  # @return [Quote]
984
- def blockquote(*args)
985
- Quote.new(self, extract_selector(args).merge(tag_name: "blockquote"))
982
+ def blockquote(opts = {})
983
+ Quote.new(self, opts.merge(tag_name: "blockquote"))
986
984
  end
987
985
  # @return [QuoteCollection]
988
- def blockquotes(*args)
989
- QuoteCollection.new(self, extract_selector(args).merge(tag_name: "blockquote"))
986
+ def blockquotes(opts = {})
987
+ QuoteCollection.new(self, opts.merge(tag_name: "blockquote"))
990
988
  end
991
989
  Watir.tag_to_class[:blockquote] = Quote
992
990
 
993
991
  # @return [Body]
994
- def body(*args)
995
- Body.new(self, extract_selector(args).merge(tag_name: "body"))
992
+ def body(opts = {})
993
+ Body.new(self, opts.merge(tag_name: "body"))
996
994
  end
997
995
  # @return [BodyCollection]
998
- def bodys(*args)
999
- BodyCollection.new(self, extract_selector(args).merge(tag_name: "body"))
996
+ def bodys(opts = {})
997
+ BodyCollection.new(self, opts.merge(tag_name: "body"))
1000
998
  end
1001
999
  Watir.tag_to_class[:body] = Body
1002
1000
 
1003
1001
  # @return [BR]
1004
- def br(*args)
1005
- BR.new(self, extract_selector(args).merge(tag_name: "br"))
1002
+ def br(opts = {})
1003
+ BR.new(self, opts.merge(tag_name: "br"))
1006
1004
  end
1007
1005
  # @return [BRCollection]
1008
- def brs(*args)
1009
- BRCollection.new(self, extract_selector(args).merge(tag_name: "br"))
1006
+ def brs(opts = {})
1007
+ BRCollection.new(self, opts.merge(tag_name: "br"))
1010
1008
  end
1011
1009
  Watir.tag_to_class[:br] = BR
1012
1010
 
1013
1011
  # @return [Button]
1014
- def button(*args)
1015
- Button.new(self, extract_selector(args).merge(tag_name: "button"))
1012
+ def button(opts = {})
1013
+ Button.new(self, opts.merge(tag_name: "button"))
1016
1014
  end
1017
1015
  # @return [ButtonCollection]
1018
- def buttons(*args)
1019
- ButtonCollection.new(self, extract_selector(args).merge(tag_name: "button"))
1016
+ def buttons(opts = {})
1017
+ ButtonCollection.new(self, opts.merge(tag_name: "button"))
1020
1018
  end
1021
1019
  Watir.tag_to_class[:button] = Button
1022
1020
 
1023
1021
  # @return [Canvas]
1024
- def canvas(*args)
1025
- Canvas.new(self, extract_selector(args).merge(tag_name: "canvas"))
1022
+ def canvas(opts = {})
1023
+ Canvas.new(self, opts.merge(tag_name: "canvas"))
1026
1024
  end
1027
1025
  # @return [CanvasCollection]
1028
- def canvases(*args)
1029
- CanvasCollection.new(self, extract_selector(args).merge(tag_name: "canvas"))
1026
+ def canvases(opts = {})
1027
+ CanvasCollection.new(self, opts.merge(tag_name: "canvas"))
1030
1028
  end
1031
1029
  Watir.tag_to_class[:canvas] = Canvas
1032
1030
 
1033
1031
  # @return [TableCaption]
1034
- def caption(*args)
1035
- TableCaption.new(self, extract_selector(args).merge(tag_name: "caption"))
1032
+ def caption(opts = {})
1033
+ TableCaption.new(self, opts.merge(tag_name: "caption"))
1036
1034
  end
1037
1035
  # @return [TableCaptionCollection]
1038
- def captions(*args)
1039
- TableCaptionCollection.new(self, extract_selector(args).merge(tag_name: "caption"))
1036
+ def captions(opts = {})
1037
+ TableCaptionCollection.new(self, opts.merge(tag_name: "caption"))
1040
1038
  end
1041
1039
  Watir.tag_to_class[:caption] = TableCaption
1042
1040
 
1043
1041
  # @return [HTMLElement]
1044
- def cite(*args)
1045
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "cite"))
1042
+ def cite(opts = {})
1043
+ HTMLElement.new(self, opts.merge(tag_name: "cite"))
1046
1044
  end
1047
1045
  # @return [HTMLElementCollection]
1048
- def cites(*args)
1049
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "cite"))
1046
+ def cites(opts = {})
1047
+ HTMLElementCollection.new(self, opts.merge(tag_name: "cite"))
1050
1048
  end
1051
1049
  Watir.tag_to_class[:cite] = HTMLElement
1052
1050
 
1053
1051
  # @return [HTMLElement]
1054
- def code(*args)
1055
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "code"))
1052
+ def code(opts = {})
1053
+ HTMLElement.new(self, opts.merge(tag_name: "code"))
1056
1054
  end
1057
1055
  # @return [HTMLElementCollection]
1058
- def codes(*args)
1059
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "code"))
1056
+ def codes(opts = {})
1057
+ HTMLElementCollection.new(self, opts.merge(tag_name: "code"))
1060
1058
  end
1061
1059
  Watir.tag_to_class[:code] = HTMLElement
1062
1060
 
1063
1061
  # @return [TableCol]
1064
- def col(*args)
1065
- TableCol.new(self, extract_selector(args).merge(tag_name: "col"))
1062
+ def col(opts = {})
1063
+ TableCol.new(self, opts.merge(tag_name: "col"))
1066
1064
  end
1067
1065
  # @return [TableColCollection]
1068
- def cols(*args)
1069
- TableColCollection.new(self, extract_selector(args).merge(tag_name: "col"))
1066
+ def cols(opts = {})
1067
+ TableColCollection.new(self, opts.merge(tag_name: "col"))
1070
1068
  end
1071
1069
  Watir.tag_to_class[:col] = TableCol
1072
1070
 
1073
1071
  # @return [TableCol]
1074
- def colgroup(*args)
1075
- TableCol.new(self, extract_selector(args).merge(tag_name: "colgroup"))
1072
+ def colgroup(opts = {})
1073
+ TableCol.new(self, opts.merge(tag_name: "colgroup"))
1076
1074
  end
1077
1075
  # @return [TableColCollection]
1078
- def colgroups(*args)
1079
- TableColCollection.new(self, extract_selector(args).merge(tag_name: "colgroup"))
1076
+ def colgroups(opts = {})
1077
+ TableColCollection.new(self, opts.merge(tag_name: "colgroup"))
1080
1078
  end
1081
1079
  Watir.tag_to_class[:colgroup] = TableCol
1082
1080
 
1083
1081
  # @return [Data]
1084
- def data(*args)
1085
- Data.new(self, extract_selector(args).merge(tag_name: "data"))
1082
+ def data(opts = {})
1083
+ Data.new(self, opts.merge(tag_name: "data"))
1086
1084
  end
1087
1085
  # @return [DataCollection]
1088
- def datas(*args)
1089
- DataCollection.new(self, extract_selector(args).merge(tag_name: "data"))
1086
+ def datas(opts = {})
1087
+ DataCollection.new(self, opts.merge(tag_name: "data"))
1090
1088
  end
1091
1089
  Watir.tag_to_class[:data] = Data
1092
1090
 
1093
1091
  # @return [DataList]
1094
- def datalist(*args)
1095
- DataList.new(self, extract_selector(args).merge(tag_name: "datalist"))
1092
+ def datalist(opts = {})
1093
+ DataList.new(self, opts.merge(tag_name: "datalist"))
1096
1094
  end
1097
1095
  # @return [DataListCollection]
1098
- def datalists(*args)
1099
- DataListCollection.new(self, extract_selector(args).merge(tag_name: "datalist"))
1096
+ def datalists(opts = {})
1097
+ DataListCollection.new(self, opts.merge(tag_name: "datalist"))
1100
1098
  end
1101
1099
  Watir.tag_to_class[:datalist] = DataList
1102
1100
 
1103
1101
  # @return [HTMLElement]
1104
- def dd(*args)
1105
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "dd"))
1102
+ def dd(opts = {})
1103
+ HTMLElement.new(self, opts.merge(tag_name: "dd"))
1106
1104
  end
1107
1105
  # @return [HTMLElementCollection]
1108
- def dds(*args)
1109
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "dd"))
1106
+ def dds(opts = {})
1107
+ HTMLElementCollection.new(self, opts.merge(tag_name: "dd"))
1110
1108
  end
1111
1109
  Watir.tag_to_class[:dd] = HTMLElement
1112
1110
 
1113
1111
  # @return [Mod]
1114
- def del(*args)
1115
- Mod.new(self, extract_selector(args).merge(tag_name: "del"))
1112
+ def del(opts = {})
1113
+ Mod.new(self, opts.merge(tag_name: "del"))
1116
1114
  end
1117
1115
  # @return [ModCollection]
1118
- def dels(*args)
1119
- ModCollection.new(self, extract_selector(args).merge(tag_name: "del"))
1116
+ def dels(opts = {})
1117
+ ModCollection.new(self, opts.merge(tag_name: "del"))
1120
1118
  end
1121
1119
  Watir.tag_to_class[:del] = Mod
1122
1120
 
1123
1121
  # @return [Details]
1124
- def details(*args)
1125
- Details.new(self, extract_selector(args).merge(tag_name: "details"))
1122
+ def details(opts = {})
1123
+ Details.new(self, opts.merge(tag_name: "details"))
1126
1124
  end
1127
1125
  # @return [DetailsCollection]
1128
- def detailses(*args)
1129
- DetailsCollection.new(self, extract_selector(args).merge(tag_name: "details"))
1126
+ def detailses(opts = {})
1127
+ DetailsCollection.new(self, opts.merge(tag_name: "details"))
1130
1128
  end
1131
1129
  Watir.tag_to_class[:details] = Details
1132
1130
 
1133
1131
  # @return [HTMLElement]
1134
- def dfn(*args)
1135
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "dfn"))
1132
+ def dfn(opts = {})
1133
+ HTMLElement.new(self, opts.merge(tag_name: "dfn"))
1136
1134
  end
1137
1135
  # @return [HTMLElementCollection]
1138
- def dfns(*args)
1139
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "dfn"))
1136
+ def dfns(opts = {})
1137
+ HTMLElementCollection.new(self, opts.merge(tag_name: "dfn"))
1140
1138
  end
1141
1139
  Watir.tag_to_class[:dfn] = HTMLElement
1142
1140
 
1143
1141
  # @return [Dialog]
1144
- def dialog(*args)
1145
- Dialog.new(self, extract_selector(args).merge(tag_name: "dialog"))
1142
+ def dialog(opts = {})
1143
+ Dialog.new(self, opts.merge(tag_name: "dialog"))
1146
1144
  end
1147
1145
  # @return [DialogCollection]
1148
- def dialogs(*args)
1149
- DialogCollection.new(self, extract_selector(args).merge(tag_name: "dialog"))
1146
+ def dialogs(opts = {})
1147
+ DialogCollection.new(self, opts.merge(tag_name: "dialog"))
1150
1148
  end
1151
1149
  Watir.tag_to_class[:dialog] = Dialog
1152
1150
 
1153
1151
  # @return [Div]
1154
- def div(*args)
1155
- Div.new(self, extract_selector(args).merge(tag_name: "div"))
1152
+ def div(opts = {})
1153
+ Div.new(self, opts.merge(tag_name: "div"))
1156
1154
  end
1157
1155
  # @return [DivCollection]
1158
- def divs(*args)
1159
- DivCollection.new(self, extract_selector(args).merge(tag_name: "div"))
1156
+ def divs(opts = {})
1157
+ DivCollection.new(self, opts.merge(tag_name: "div"))
1160
1158
  end
1161
1159
  Watir.tag_to_class[:div] = Div
1162
1160
 
1163
1161
  # @return [DList]
1164
- def dl(*args)
1165
- DList.new(self, extract_selector(args).merge(tag_name: "dl"))
1162
+ def dl(opts = {})
1163
+ DList.new(self, opts.merge(tag_name: "dl"))
1166
1164
  end
1167
1165
  # @return [DListCollection]
1168
- def dls(*args)
1169
- DListCollection.new(self, extract_selector(args).merge(tag_name: "dl"))
1166
+ def dls(opts = {})
1167
+ DListCollection.new(self, opts.merge(tag_name: "dl"))
1170
1168
  end
1171
1169
  Watir.tag_to_class[:dl] = DList
1172
1170
 
1173
1171
  # @return [HTMLElement]
1174
- def dt(*args)
1175
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "dt"))
1172
+ def dt(opts = {})
1173
+ HTMLElement.new(self, opts.merge(tag_name: "dt"))
1176
1174
  end
1177
1175
  # @return [HTMLElementCollection]
1178
- def dts(*args)
1179
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "dt"))
1176
+ def dts(opts = {})
1177
+ HTMLElementCollection.new(self, opts.merge(tag_name: "dt"))
1180
1178
  end
1181
1179
  Watir.tag_to_class[:dt] = HTMLElement
1182
1180
 
1183
1181
  # @return [HTMLElement]
1184
- def em(*args)
1185
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "em"))
1182
+ def em(opts = {})
1183
+ HTMLElement.new(self, opts.merge(tag_name: "em"))
1186
1184
  end
1187
1185
  # @return [HTMLElementCollection]
1188
- def ems(*args)
1189
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "em"))
1186
+ def ems(opts = {})
1187
+ HTMLElementCollection.new(self, opts.merge(tag_name: "em"))
1190
1188
  end
1191
1189
  Watir.tag_to_class[:em] = HTMLElement
1192
1190
 
1193
1191
  # @return [Embed]
1194
- def embed(*args)
1195
- Embed.new(self, extract_selector(args).merge(tag_name: "embed"))
1192
+ def embed(opts = {})
1193
+ Embed.new(self, opts.merge(tag_name: "embed"))
1196
1194
  end
1197
1195
  # @return [EmbedCollection]
1198
- def embeds(*args)
1199
- EmbedCollection.new(self, extract_selector(args).merge(tag_name: "embed"))
1196
+ def embeds(opts = {})
1197
+ EmbedCollection.new(self, opts.merge(tag_name: "embed"))
1200
1198
  end
1201
1199
  Watir.tag_to_class[:embed] = Embed
1202
1200
 
1203
1201
  # @return [FieldSet]
1204
- def fieldset(*args)
1205
- FieldSet.new(self, extract_selector(args).merge(tag_name: "fieldset"))
1202
+ def fieldset(opts = {})
1203
+ FieldSet.new(self, opts.merge(tag_name: "fieldset"))
1206
1204
  end
1207
1205
  # @return [FieldSetCollection]
1208
- def fieldsets(*args)
1209
- FieldSetCollection.new(self, extract_selector(args).merge(tag_name: "fieldset"))
1206
+ def fieldsets(opts = {})
1207
+ FieldSetCollection.new(self, opts.merge(tag_name: "fieldset"))
1210
1208
  end
1211
1209
  Watir.tag_to_class[:fieldset] = FieldSet
1212
1210
 
1213
1211
  # @return [HTMLElement]
1214
- def figcaption(*args)
1215
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "figcaption"))
1212
+ def figcaption(opts = {})
1213
+ HTMLElement.new(self, opts.merge(tag_name: "figcaption"))
1216
1214
  end
1217
1215
  # @return [HTMLElementCollection]
1218
- def figcaptions(*args)
1219
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "figcaption"))
1216
+ def figcaptions(opts = {})
1217
+ HTMLElementCollection.new(self, opts.merge(tag_name: "figcaption"))
1220
1218
  end
1221
1219
  Watir.tag_to_class[:figcaption] = HTMLElement
1222
1220
 
1223
1221
  # @return [HTMLElement]
1224
- def figure(*args)
1225
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "figure"))
1222
+ def figure(opts = {})
1223
+ HTMLElement.new(self, opts.merge(tag_name: "figure"))
1226
1224
  end
1227
1225
  # @return [HTMLElementCollection]
1228
- def figures(*args)
1229
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "figure"))
1226
+ def figures(opts = {})
1227
+ HTMLElementCollection.new(self, opts.merge(tag_name: "figure"))
1230
1228
  end
1231
1229
  Watir.tag_to_class[:figure] = HTMLElement
1232
1230
 
1233
1231
  # @return [HTMLElement]
1234
- def footer(*args)
1235
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "footer"))
1232
+ def footer(opts = {})
1233
+ HTMLElement.new(self, opts.merge(tag_name: "footer"))
1236
1234
  end
1237
1235
  # @return [HTMLElementCollection]
1238
- def footers(*args)
1239
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "footer"))
1236
+ def footers(opts = {})
1237
+ HTMLElementCollection.new(self, opts.merge(tag_name: "footer"))
1240
1238
  end
1241
1239
  Watir.tag_to_class[:footer] = HTMLElement
1242
1240
 
1243
1241
  # @return [Form]
1244
- def form(*args)
1245
- Form.new(self, extract_selector(args).merge(tag_name: "form"))
1242
+ def form(opts = {})
1243
+ Form.new(self, opts.merge(tag_name: "form"))
1246
1244
  end
1247
1245
  # @return [FormCollection]
1248
- def forms(*args)
1249
- FormCollection.new(self, extract_selector(args).merge(tag_name: "form"))
1246
+ def forms(opts = {})
1247
+ FormCollection.new(self, opts.merge(tag_name: "form"))
1250
1248
  end
1251
1249
  Watir.tag_to_class[:form] = Form
1252
1250
 
1253
1251
  # @return [FrameSet]
1254
- def frameset(*args)
1255
- FrameSet.new(self, extract_selector(args).merge(tag_name: "frameset"))
1252
+ def frameset(opts = {})
1253
+ FrameSet.new(self, opts.merge(tag_name: "frameset"))
1256
1254
  end
1257
1255
  # @return [FrameSetCollection]
1258
- def framesets(*args)
1259
- FrameSetCollection.new(self, extract_selector(args).merge(tag_name: "frameset"))
1256
+ def framesets(opts = {})
1257
+ FrameSetCollection.new(self, opts.merge(tag_name: "frameset"))
1260
1258
  end
1261
1259
  Watir.tag_to_class[:frameset] = FrameSet
1262
1260
 
1263
1261
  # @return [Heading]
1264
- def h1(*args)
1265
- Heading.new(self, extract_selector(args).merge(tag_name: "h1"))
1262
+ def h1(opts = {})
1263
+ Heading.new(self, opts.merge(tag_name: "h1"))
1266
1264
  end
1267
1265
  # @return [HeadingCollection]
1268
- def h1s(*args)
1269
- HeadingCollection.new(self, extract_selector(args).merge(tag_name: "h1"))
1266
+ def h1s(opts = {})
1267
+ HeadingCollection.new(self, opts.merge(tag_name: "h1"))
1270
1268
  end
1271
1269
  Watir.tag_to_class[:h1] = Heading
1272
1270
 
1273
1271
  # @return [Heading]
1274
- def h2(*args)
1275
- Heading.new(self, extract_selector(args).merge(tag_name: "h2"))
1272
+ def h2(opts = {})
1273
+ Heading.new(self, opts.merge(tag_name: "h2"))
1276
1274
  end
1277
1275
  # @return [HeadingCollection]
1278
- def h2s(*args)
1279
- HeadingCollection.new(self, extract_selector(args).merge(tag_name: "h2"))
1276
+ def h2s(opts = {})
1277
+ HeadingCollection.new(self, opts.merge(tag_name: "h2"))
1280
1278
  end
1281
1279
  Watir.tag_to_class[:h2] = Heading
1282
1280
 
1283
1281
  # @return [Heading]
1284
- def h3(*args)
1285
- Heading.new(self, extract_selector(args).merge(tag_name: "h3"))
1282
+ def h3(opts = {})
1283
+ Heading.new(self, opts.merge(tag_name: "h3"))
1286
1284
  end
1287
1285
  # @return [HeadingCollection]
1288
- def h3s(*args)
1289
- HeadingCollection.new(self, extract_selector(args).merge(tag_name: "h3"))
1286
+ def h3s(opts = {})
1287
+ HeadingCollection.new(self, opts.merge(tag_name: "h3"))
1290
1288
  end
1291
1289
  Watir.tag_to_class[:h3] = Heading
1292
1290
 
1293
1291
  # @return [Heading]
1294
- def h4(*args)
1295
- Heading.new(self, extract_selector(args).merge(tag_name: "h4"))
1292
+ def h4(opts = {})
1293
+ Heading.new(self, opts.merge(tag_name: "h4"))
1296
1294
  end
1297
1295
  # @return [HeadingCollection]
1298
- def h4s(*args)
1299
- HeadingCollection.new(self, extract_selector(args).merge(tag_name: "h4"))
1296
+ def h4s(opts = {})
1297
+ HeadingCollection.new(self, opts.merge(tag_name: "h4"))
1300
1298
  end
1301
1299
  Watir.tag_to_class[:h4] = Heading
1302
1300
 
1303
1301
  # @return [Heading]
1304
- def h5(*args)
1305
- Heading.new(self, extract_selector(args).merge(tag_name: "h5"))
1302
+ def h5(opts = {})
1303
+ Heading.new(self, opts.merge(tag_name: "h5"))
1306
1304
  end
1307
1305
  # @return [HeadingCollection]
1308
- def h5s(*args)
1309
- HeadingCollection.new(self, extract_selector(args).merge(tag_name: "h5"))
1306
+ def h5s(opts = {})
1307
+ HeadingCollection.new(self, opts.merge(tag_name: "h5"))
1310
1308
  end
1311
1309
  Watir.tag_to_class[:h5] = Heading
1312
1310
 
1313
1311
  # @return [Heading]
1314
- def h6(*args)
1315
- Heading.new(self, extract_selector(args).merge(tag_name: "h6"))
1312
+ def h6(opts = {})
1313
+ Heading.new(self, opts.merge(tag_name: "h6"))
1316
1314
  end
1317
1315
  # @return [HeadingCollection]
1318
- def h6s(*args)
1319
- HeadingCollection.new(self, extract_selector(args).merge(tag_name: "h6"))
1316
+ def h6s(opts = {})
1317
+ HeadingCollection.new(self, opts.merge(tag_name: "h6"))
1320
1318
  end
1321
1319
  Watir.tag_to_class[:h6] = Heading
1322
1320
 
1323
1321
  # @return [Head]
1324
- def head(*args)
1325
- Head.new(self, extract_selector(args).merge(tag_name: "head"))
1322
+ def head(opts = {})
1323
+ Head.new(self, opts.merge(tag_name: "head"))
1326
1324
  end
1327
1325
  # @return [HeadCollection]
1328
- def heads(*args)
1329
- HeadCollection.new(self, extract_selector(args).merge(tag_name: "head"))
1326
+ def heads(opts = {})
1327
+ HeadCollection.new(self, opts.merge(tag_name: "head"))
1330
1328
  end
1331
1329
  Watir.tag_to_class[:head] = Head
1332
1330
 
1333
1331
  # @return [HTMLElement]
1334
- def header(*args)
1335
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "header"))
1332
+ def header(opts = {})
1333
+ HTMLElement.new(self, opts.merge(tag_name: "header"))
1336
1334
  end
1337
1335
  # @return [HTMLElementCollection]
1338
- def headers(*args)
1339
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "header"))
1336
+ def headers(opts = {})
1337
+ HTMLElementCollection.new(self, opts.merge(tag_name: "header"))
1340
1338
  end
1341
1339
  Watir.tag_to_class[:header] = HTMLElement
1342
1340
 
1343
1341
  # @return [HR]
1344
- def hr(*args)
1345
- HR.new(self, extract_selector(args).merge(tag_name: "hr"))
1342
+ def hr(opts = {})
1343
+ HR.new(self, opts.merge(tag_name: "hr"))
1346
1344
  end
1347
1345
  # @return [HRCollection]
1348
- def hrs(*args)
1349
- HRCollection.new(self, extract_selector(args).merge(tag_name: "hr"))
1346
+ def hrs(opts = {})
1347
+ HRCollection.new(self, opts.merge(tag_name: "hr"))
1350
1348
  end
1351
1349
  Watir.tag_to_class[:hr] = HR
1352
1350
 
1353
1351
  # @return [Html]
1354
- def html(*args)
1355
- Html.new(self, extract_selector(args).merge(tag_name: "html"))
1352
+ def html(opts = {})
1353
+ Html.new(self, opts.merge(tag_name: "html"))
1356
1354
  end
1357
1355
  # @return [HtmlCollection]
1358
- def htmls(*args)
1359
- HtmlCollection.new(self, extract_selector(args).merge(tag_name: "html"))
1356
+ def htmls(opts = {})
1357
+ HtmlCollection.new(self, opts.merge(tag_name: "html"))
1360
1358
  end
1361
1359
  Watir.tag_to_class[:html] = Html
1362
1360
 
1363
1361
  # @return [HTMLElement]
1364
- def i(*args)
1365
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "i"))
1362
+ def i(opts = {})
1363
+ HTMLElement.new(self, opts.merge(tag_name: "i"))
1366
1364
  end
1367
1365
  # @return [HTMLElementCollection]
1368
- def is(*args)
1369
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "i"))
1366
+ def is(opts = {})
1367
+ HTMLElementCollection.new(self, opts.merge(tag_name: "i"))
1370
1368
  end
1371
1369
  Watir.tag_to_class[:i] = HTMLElement
1372
1370
 
1373
1371
  # @return [IFrame]
1374
- def iframe(*args)
1375
- IFrame.new(self, extract_selector(args).merge(tag_name: "iframe"))
1372
+ def iframe(opts = {})
1373
+ IFrame.new(self, opts.merge(tag_name: "iframe"))
1376
1374
  end
1377
1375
  # @return [IFrameCollection]
1378
- def iframes(*args)
1379
- IFrameCollection.new(self, extract_selector(args).merge(tag_name: "iframe"))
1376
+ def iframes(opts = {})
1377
+ IFrameCollection.new(self, opts.merge(tag_name: "iframe"))
1380
1378
  end
1381
1379
  Watir.tag_to_class[:iframe] = IFrame
1382
1380
 
1383
1381
  # @return [Image]
1384
- def img(*args)
1385
- Image.new(self, extract_selector(args).merge(tag_name: "img"))
1382
+ def img(opts = {})
1383
+ Image.new(self, opts.merge(tag_name: "img"))
1386
1384
  end
1387
1385
  # @return [ImageCollection]
1388
- def imgs(*args)
1389
- ImageCollection.new(self, extract_selector(args).merge(tag_name: "img"))
1386
+ def imgs(opts = {})
1387
+ ImageCollection.new(self, opts.merge(tag_name: "img"))
1390
1388
  end
1391
1389
  Watir.tag_to_class[:img] = Image
1392
1390
 
1393
1391
  # @return [Input]
1394
- def input(*args)
1395
- Input.new(self, extract_selector(args).merge(tag_name: "input"))
1392
+ def input(opts = {})
1393
+ Input.new(self, opts.merge(tag_name: "input"))
1396
1394
  end
1397
1395
  # @return [InputCollection]
1398
- def inputs(*args)
1399
- InputCollection.new(self, extract_selector(args).merge(tag_name: "input"))
1396
+ def inputs(opts = {})
1397
+ InputCollection.new(self, opts.merge(tag_name: "input"))
1400
1398
  end
1401
1399
  Watir.tag_to_class[:input] = Input
1402
1400
 
1403
1401
  # @return [Mod]
1404
- def ins(*args)
1405
- Mod.new(self, extract_selector(args).merge(tag_name: "ins"))
1402
+ def ins(opts = {})
1403
+ Mod.new(self, opts.merge(tag_name: "ins"))
1406
1404
  end
1407
1405
  # @return [ModCollection]
1408
- def inses(*args)
1409
- ModCollection.new(self, extract_selector(args).merge(tag_name: "ins"))
1406
+ def inses(opts = {})
1407
+ ModCollection.new(self, opts.merge(tag_name: "ins"))
1410
1408
  end
1411
1409
  Watir.tag_to_class[:ins] = Mod
1412
1410
 
1413
1411
  # @return [HTMLElement]
1414
- def kbd(*args)
1415
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "kbd"))
1412
+ def kbd(opts = {})
1413
+ HTMLElement.new(self, opts.merge(tag_name: "kbd"))
1416
1414
  end
1417
1415
  # @return [HTMLElementCollection]
1418
- def kbds(*args)
1419
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "kbd"))
1416
+ def kbds(opts = {})
1417
+ HTMLElementCollection.new(self, opts.merge(tag_name: "kbd"))
1420
1418
  end
1421
1419
  Watir.tag_to_class[:kbd] = HTMLElement
1422
1420
 
1423
1421
  # @return [Label]
1424
- def label(*args)
1425
- Label.new(self, extract_selector(args).merge(tag_name: "label"))
1422
+ def label(opts = {})
1423
+ Label.new(self, opts.merge(tag_name: "label"))
1426
1424
  end
1427
1425
  # @return [LabelCollection]
1428
- def labels(*args)
1429
- LabelCollection.new(self, extract_selector(args).merge(tag_name: "label"))
1426
+ def labels(opts = {})
1427
+ LabelCollection.new(self, opts.merge(tag_name: "label"))
1430
1428
  end
1431
1429
  Watir.tag_to_class[:label] = Label
1432
1430
 
1433
1431
  # @return [Legend]
1434
- def legend(*args)
1435
- Legend.new(self, extract_selector(args).merge(tag_name: "legend"))
1432
+ def legend(opts = {})
1433
+ Legend.new(self, opts.merge(tag_name: "legend"))
1436
1434
  end
1437
1435
  # @return [LegendCollection]
1438
- def legends(*args)
1439
- LegendCollection.new(self, extract_selector(args).merge(tag_name: "legend"))
1436
+ def legends(opts = {})
1437
+ LegendCollection.new(self, opts.merge(tag_name: "legend"))
1440
1438
  end
1441
1439
  Watir.tag_to_class[:legend] = Legend
1442
1440
 
1443
1441
  # @return [LI]
1444
- def li(*args)
1445
- LI.new(self, extract_selector(args).merge(tag_name: "li"))
1442
+ def li(opts = {})
1443
+ LI.new(self, opts.merge(tag_name: "li"))
1446
1444
  end
1447
1445
  # @return [LICollection]
1448
- def lis(*args)
1449
- LICollection.new(self, extract_selector(args).merge(tag_name: "li"))
1446
+ def lis(opts = {})
1447
+ LICollection.new(self, opts.merge(tag_name: "li"))
1450
1448
  end
1451
1449
  Watir.tag_to_class[:li] = LI
1452
1450
 
1453
1451
  # @return [HTMLElement]
1454
- def main(*args)
1455
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "main"))
1452
+ def main(opts = {})
1453
+ HTMLElement.new(self, opts.merge(tag_name: "main"))
1456
1454
  end
1457
1455
  # @return [HTMLElementCollection]
1458
- def mains(*args)
1459
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "main"))
1456
+ def mains(opts = {})
1457
+ HTMLElementCollection.new(self, opts.merge(tag_name: "main"))
1460
1458
  end
1461
1459
  Watir.tag_to_class[:main] = HTMLElement
1462
1460
 
1463
1461
  # @return [Map]
1464
- def map(*args)
1465
- Map.new(self, extract_selector(args).merge(tag_name: "map"))
1462
+ def map(opts = {})
1463
+ Map.new(self, opts.merge(tag_name: "map"))
1466
1464
  end
1467
1465
  # @return [MapCollection]
1468
- def maps(*args)
1469
- MapCollection.new(self, extract_selector(args).merge(tag_name: "map"))
1466
+ def maps(opts = {})
1467
+ MapCollection.new(self, opts.merge(tag_name: "map"))
1470
1468
  end
1471
1469
  Watir.tag_to_class[:map] = Map
1472
1470
 
1473
1471
  # @return [HTMLElement]
1474
- def mark(*args)
1475
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "mark"))
1472
+ def mark(opts = {})
1473
+ HTMLElement.new(self, opts.merge(tag_name: "mark"))
1476
1474
  end
1477
1475
  # @return [HTMLElementCollection]
1478
- def marks(*args)
1479
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "mark"))
1476
+ def marks(opts = {})
1477
+ HTMLElementCollection.new(self, opts.merge(tag_name: "mark"))
1480
1478
  end
1481
1479
  Watir.tag_to_class[:mark] = HTMLElement
1482
1480
 
1483
1481
  # @return [Meta]
1484
- def meta(*args)
1485
- Meta.new(self, extract_selector(args).merge(tag_name: "meta"))
1482
+ def meta(opts = {})
1483
+ Meta.new(self, opts.merge(tag_name: "meta"))
1486
1484
  end
1487
1485
  # @return [MetaCollection]
1488
- def metas(*args)
1489
- MetaCollection.new(self, extract_selector(args).merge(tag_name: "meta"))
1486
+ def metas(opts = {})
1487
+ MetaCollection.new(self, opts.merge(tag_name: "meta"))
1490
1488
  end
1491
1489
  Watir.tag_to_class[:meta] = Meta
1492
1490
 
1493
1491
  # @return [Meter]
1494
- def meter(*args)
1495
- Meter.new(self, extract_selector(args).merge(tag_name: "meter"))
1492
+ def meter(opts = {})
1493
+ Meter.new(self, opts.merge(tag_name: "meter"))
1496
1494
  end
1497
1495
  # @return [MeterCollection]
1498
- def meters(*args)
1499
- MeterCollection.new(self, extract_selector(args).merge(tag_name: "meter"))
1496
+ def meters(opts = {})
1497
+ MeterCollection.new(self, opts.merge(tag_name: "meter"))
1500
1498
  end
1501
1499
  Watir.tag_to_class[:meter] = Meter
1502
1500
 
1503
1501
  # @return [HTMLElement]
1504
- def nav(*args)
1505
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "nav"))
1502
+ def nav(opts = {})
1503
+ HTMLElement.new(self, opts.merge(tag_name: "nav"))
1506
1504
  end
1507
1505
  # @return [HTMLElementCollection]
1508
- def navs(*args)
1509
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "nav"))
1506
+ def navs(opts = {})
1507
+ HTMLElementCollection.new(self, opts.merge(tag_name: "nav"))
1510
1508
  end
1511
1509
  Watir.tag_to_class[:nav] = HTMLElement
1512
1510
 
1513
1511
  # @return [HTMLElement]
1514
- def noscript(*args)
1515
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "noscript"))
1512
+ def noscript(opts = {})
1513
+ HTMLElement.new(self, opts.merge(tag_name: "noscript"))
1516
1514
  end
1517
1515
  # @return [HTMLElementCollection]
1518
- def noscripts(*args)
1519
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "noscript"))
1516
+ def noscripts(opts = {})
1517
+ HTMLElementCollection.new(self, opts.merge(tag_name: "noscript"))
1520
1518
  end
1521
1519
  Watir.tag_to_class[:noscript] = HTMLElement
1522
1520
 
1523
1521
  # @return [Object]
1524
- def object(*args)
1525
- Object.new(self, extract_selector(args).merge(tag_name: "object"))
1522
+ def object(opts = {})
1523
+ Object.new(self, opts.merge(tag_name: "object"))
1526
1524
  end
1527
1525
  # @return [ObjectCollection]
1528
- def objects(*args)
1529
- ObjectCollection.new(self, extract_selector(args).merge(tag_name: "object"))
1526
+ def objects(opts = {})
1527
+ ObjectCollection.new(self, opts.merge(tag_name: "object"))
1530
1528
  end
1531
1529
  Watir.tag_to_class[:object] = Object
1532
1530
 
1533
1531
  # @return [OList]
1534
- def ol(*args)
1535
- OList.new(self, extract_selector(args).merge(tag_name: "ol"))
1532
+ def ol(opts = {})
1533
+ OList.new(self, opts.merge(tag_name: "ol"))
1536
1534
  end
1537
1535
  # @return [OListCollection]
1538
- def ols(*args)
1539
- OListCollection.new(self, extract_selector(args).merge(tag_name: "ol"))
1536
+ def ols(opts = {})
1537
+ OListCollection.new(self, opts.merge(tag_name: "ol"))
1540
1538
  end
1541
1539
  Watir.tag_to_class[:ol] = OList
1542
1540
 
1543
1541
  # @return [OptGroup]
1544
- def optgroup(*args)
1545
- OptGroup.new(self, extract_selector(args).merge(tag_name: "optgroup"))
1542
+ def optgroup(opts = {})
1543
+ OptGroup.new(self, opts.merge(tag_name: "optgroup"))
1546
1544
  end
1547
1545
  # @return [OptGroupCollection]
1548
- def optgroups(*args)
1549
- OptGroupCollection.new(self, extract_selector(args).merge(tag_name: "optgroup"))
1546
+ def optgroups(opts = {})
1547
+ OptGroupCollection.new(self, opts.merge(tag_name: "optgroup"))
1550
1548
  end
1551
1549
  Watir.tag_to_class[:optgroup] = OptGroup
1552
1550
 
1553
1551
  # @return [Option]
1554
- def option(*args)
1555
- Option.new(self, extract_selector(args).merge(tag_name: "option"))
1552
+ def option(opts = {})
1553
+ Option.new(self, opts.merge(tag_name: "option"))
1556
1554
  end
1557
1555
  # @return [OptionCollection]
1558
- def options(*args)
1559
- OptionCollection.new(self, extract_selector(args).merge(tag_name: "option"))
1556
+ def options(opts = {})
1557
+ OptionCollection.new(self, opts.merge(tag_name: "option"))
1560
1558
  end
1561
1559
  Watir.tag_to_class[:option] = Option
1562
1560
 
1563
1561
  # @return [Output]
1564
- def output(*args)
1565
- Output.new(self, extract_selector(args).merge(tag_name: "output"))
1562
+ def output(opts = {})
1563
+ Output.new(self, opts.merge(tag_name: "output"))
1566
1564
  end
1567
1565
  # @return [OutputCollection]
1568
- def outputs(*args)
1569
- OutputCollection.new(self, extract_selector(args).merge(tag_name: "output"))
1566
+ def outputs(opts = {})
1567
+ OutputCollection.new(self, opts.merge(tag_name: "output"))
1570
1568
  end
1571
1569
  Watir.tag_to_class[:output] = Output
1572
1570
 
1573
1571
  # @return [Paragraph]
1574
- def p(*args)
1575
- Paragraph.new(self, extract_selector(args).merge(tag_name: "p"))
1572
+ def p(opts = {})
1573
+ Paragraph.new(self, opts.merge(tag_name: "p"))
1576
1574
  end
1577
1575
  # @return [ParagraphCollection]
1578
- def ps(*args)
1579
- ParagraphCollection.new(self, extract_selector(args).merge(tag_name: "p"))
1576
+ def ps(opts = {})
1577
+ ParagraphCollection.new(self, opts.merge(tag_name: "p"))
1580
1578
  end
1581
1579
  Watir.tag_to_class[:p] = Paragraph
1582
1580
 
1583
1581
  # @return [Param]
1584
- def param(*args)
1585
- Param.new(self, extract_selector(args).merge(tag_name: "param"))
1582
+ def param(opts = {})
1583
+ Param.new(self, opts.merge(tag_name: "param"))
1586
1584
  end
1587
1585
  # @return [ParamCollection]
1588
- def params(*args)
1589
- ParamCollection.new(self, extract_selector(args).merge(tag_name: "param"))
1586
+ def params(opts = {})
1587
+ ParamCollection.new(self, opts.merge(tag_name: "param"))
1590
1588
  end
1591
1589
  Watir.tag_to_class[:param] = Param
1592
1590
 
1593
1591
  # @return [Picture]
1594
- def picture(*args)
1595
- Picture.new(self, extract_selector(args).merge(tag_name: "picture"))
1592
+ def picture(opts = {})
1593
+ Picture.new(self, opts.merge(tag_name: "picture"))
1596
1594
  end
1597
1595
  # @return [PictureCollection]
1598
- def pictures(*args)
1599
- PictureCollection.new(self, extract_selector(args).merge(tag_name: "picture"))
1596
+ def pictures(opts = {})
1597
+ PictureCollection.new(self, opts.merge(tag_name: "picture"))
1600
1598
  end
1601
1599
  Watir.tag_to_class[:picture] = Picture
1602
1600
 
1603
1601
  # @return [Pre]
1604
- def pre(*args)
1605
- Pre.new(self, extract_selector(args).merge(tag_name: "pre"))
1602
+ def pre(opts = {})
1603
+ Pre.new(self, opts.merge(tag_name: "pre"))
1606
1604
  end
1607
1605
  # @return [PreCollection]
1608
- def pres(*args)
1609
- PreCollection.new(self, extract_selector(args).merge(tag_name: "pre"))
1606
+ def pres(opts = {})
1607
+ PreCollection.new(self, opts.merge(tag_name: "pre"))
1610
1608
  end
1611
1609
  Watir.tag_to_class[:pre] = Pre
1612
1610
 
1613
1611
  # @return [Progress]
1614
- def progress(*args)
1615
- Progress.new(self, extract_selector(args).merge(tag_name: "progress"))
1612
+ def progress(opts = {})
1613
+ Progress.new(self, opts.merge(tag_name: "progress"))
1616
1614
  end
1617
1615
  # @return [ProgressCollection]
1618
- def progresses(*args)
1619
- ProgressCollection.new(self, extract_selector(args).merge(tag_name: "progress"))
1616
+ def progresses(opts = {})
1617
+ ProgressCollection.new(self, opts.merge(tag_name: "progress"))
1620
1618
  end
1621
1619
  Watir.tag_to_class[:progress] = Progress
1622
1620
 
1623
1621
  # @return [Quote]
1624
- def q(*args)
1625
- Quote.new(self, extract_selector(args).merge(tag_name: "q"))
1622
+ def q(opts = {})
1623
+ Quote.new(self, opts.merge(tag_name: "q"))
1626
1624
  end
1627
1625
  # @return [QuoteCollection]
1628
- def qs(*args)
1629
- QuoteCollection.new(self, extract_selector(args).merge(tag_name: "q"))
1626
+ def qs(opts = {})
1627
+ QuoteCollection.new(self, opts.merge(tag_name: "q"))
1630
1628
  end
1631
1629
  Watir.tag_to_class[:q] = Quote
1632
1630
 
1633
1631
  # @return [HTMLElement]
1634
- def rb(*args)
1635
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "rb"))
1632
+ def rb(opts = {})
1633
+ HTMLElement.new(self, opts.merge(tag_name: "rb"))
1636
1634
  end
1637
1635
  # @return [HTMLElementCollection]
1638
- def rbs(*args)
1639
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "rb"))
1636
+ def rbs(opts = {})
1637
+ HTMLElementCollection.new(self, opts.merge(tag_name: "rb"))
1640
1638
  end
1641
1639
  Watir.tag_to_class[:rb] = HTMLElement
1642
1640
 
1643
1641
  # @return [HTMLElement]
1644
- def rp(*args)
1645
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "rp"))
1642
+ def rp(opts = {})
1643
+ HTMLElement.new(self, opts.merge(tag_name: "rp"))
1646
1644
  end
1647
1645
  # @return [HTMLElementCollection]
1648
- def rps(*args)
1649
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "rp"))
1646
+ def rps(opts = {})
1647
+ HTMLElementCollection.new(self, opts.merge(tag_name: "rp"))
1650
1648
  end
1651
1649
  Watir.tag_to_class[:rp] = HTMLElement
1652
1650
 
1653
1651
  # @return [HTMLElement]
1654
- def rt(*args)
1655
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "rt"))
1652
+ def rt(opts = {})
1653
+ HTMLElement.new(self, opts.merge(tag_name: "rt"))
1656
1654
  end
1657
1655
  # @return [HTMLElementCollection]
1658
- def rts(*args)
1659
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "rt"))
1656
+ def rts(opts = {})
1657
+ HTMLElementCollection.new(self, opts.merge(tag_name: "rt"))
1660
1658
  end
1661
1659
  Watir.tag_to_class[:rt] = HTMLElement
1662
1660
 
1663
1661
  # @return [HTMLElement]
1664
- def rtc(*args)
1665
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "rtc"))
1662
+ def rtc(opts = {})
1663
+ HTMLElement.new(self, opts.merge(tag_name: "rtc"))
1666
1664
  end
1667
1665
  # @return [HTMLElementCollection]
1668
- def rtcs(*args)
1669
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "rtc"))
1666
+ def rtcs(opts = {})
1667
+ HTMLElementCollection.new(self, opts.merge(tag_name: "rtc"))
1670
1668
  end
1671
1669
  Watir.tag_to_class[:rtc] = HTMLElement
1672
1670
 
1673
1671
  # @return [HTMLElement]
1674
- def ruby(*args)
1675
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "ruby"))
1672
+ def ruby(opts = {})
1673
+ HTMLElement.new(self, opts.merge(tag_name: "ruby"))
1676
1674
  end
1677
1675
  # @return [HTMLElementCollection]
1678
- def rubies(*args)
1679
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "ruby"))
1676
+ def rubies(opts = {})
1677
+ HTMLElementCollection.new(self, opts.merge(tag_name: "ruby"))
1680
1678
  end
1681
1679
  Watir.tag_to_class[:ruby] = HTMLElement
1682
1680
 
1683
1681
  # @return [HTMLElement]
1684
- def s(*args)
1685
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "s"))
1682
+ def s(opts = {})
1683
+ HTMLElement.new(self, opts.merge(tag_name: "s"))
1686
1684
  end
1687
1685
  # @return [HTMLElementCollection]
1688
- def ss(*args)
1689
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "s"))
1686
+ def ss(opts = {})
1687
+ HTMLElementCollection.new(self, opts.merge(tag_name: "s"))
1690
1688
  end
1691
1689
  Watir.tag_to_class[:s] = HTMLElement
1692
1690
 
1693
1691
  # @return [HTMLElement]
1694
- def samp(*args)
1695
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "samp"))
1692
+ def samp(opts = {})
1693
+ HTMLElement.new(self, opts.merge(tag_name: "samp"))
1696
1694
  end
1697
1695
  # @return [HTMLElementCollection]
1698
- def samps(*args)
1699
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "samp"))
1696
+ def samps(opts = {})
1697
+ HTMLElementCollection.new(self, opts.merge(tag_name: "samp"))
1700
1698
  end
1701
1699
  Watir.tag_to_class[:samp] = HTMLElement
1702
1700
 
1703
1701
  # @return [Script]
1704
- def script(*args)
1705
- Script.new(self, extract_selector(args).merge(tag_name: "script"))
1702
+ def script(opts = {})
1703
+ Script.new(self, opts.merge(tag_name: "script"))
1706
1704
  end
1707
1705
  # @return [ScriptCollection]
1708
- def scripts(*args)
1709
- ScriptCollection.new(self, extract_selector(args).merge(tag_name: "script"))
1706
+ def scripts(opts = {})
1707
+ ScriptCollection.new(self, opts.merge(tag_name: "script"))
1710
1708
  end
1711
1709
  Watir.tag_to_class[:script] = Script
1712
1710
 
1713
1711
  # @return [HTMLElement]
1714
- def section(*args)
1715
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "section"))
1712
+ def section(opts = {})
1713
+ HTMLElement.new(self, opts.merge(tag_name: "section"))
1716
1714
  end
1717
1715
  # @return [HTMLElementCollection]
1718
- def sections(*args)
1719
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "section"))
1716
+ def sections(opts = {})
1717
+ HTMLElementCollection.new(self, opts.merge(tag_name: "section"))
1720
1718
  end
1721
1719
  Watir.tag_to_class[:section] = HTMLElement
1722
1720
 
1723
1721
  # @return [Select]
1724
- def select(*args)
1725
- Select.new(self, extract_selector(args).merge(tag_name: "select"))
1722
+ def select(opts = {})
1723
+ Select.new(self, opts.merge(tag_name: "select"))
1726
1724
  end
1727
1725
  # @return [SelectCollection]
1728
- def selects(*args)
1729
- SelectCollection.new(self, extract_selector(args).merge(tag_name: "select"))
1726
+ def selects(opts = {})
1727
+ SelectCollection.new(self, opts.merge(tag_name: "select"))
1730
1728
  end
1731
1729
  Watir.tag_to_class[:select] = Select
1732
1730
 
1733
1731
  # @return [HTMLElement]
1734
- def small(*args)
1735
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "small"))
1732
+ def small(opts = {})
1733
+ HTMLElement.new(self, opts.merge(tag_name: "small"))
1736
1734
  end
1737
1735
  # @return [HTMLElementCollection]
1738
- def smalls(*args)
1739
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "small"))
1736
+ def smalls(opts = {})
1737
+ HTMLElementCollection.new(self, opts.merge(tag_name: "small"))
1740
1738
  end
1741
1739
  Watir.tag_to_class[:small] = HTMLElement
1742
1740
 
1743
1741
  # @return [Source]
1744
- def source(*args)
1745
- Source.new(self, extract_selector(args).merge(tag_name: "source"))
1742
+ def source(opts = {})
1743
+ Source.new(self, opts.merge(tag_name: "source"))
1746
1744
  end
1747
1745
  # @return [SourceCollection]
1748
- def sources(*args)
1749
- SourceCollection.new(self, extract_selector(args).merge(tag_name: "source"))
1746
+ def sources(opts = {})
1747
+ SourceCollection.new(self, opts.merge(tag_name: "source"))
1750
1748
  end
1751
1749
  Watir.tag_to_class[:source] = Source
1752
1750
 
1753
1751
  # @return [Span]
1754
- def span(*args)
1755
- Span.new(self, extract_selector(args).merge(tag_name: "span"))
1752
+ def span(opts = {})
1753
+ Span.new(self, opts.merge(tag_name: "span"))
1756
1754
  end
1757
1755
  # @return [SpanCollection]
1758
- def spans(*args)
1759
- SpanCollection.new(self, extract_selector(args).merge(tag_name: "span"))
1756
+ def spans(opts = {})
1757
+ SpanCollection.new(self, opts.merge(tag_name: "span"))
1760
1758
  end
1761
1759
  Watir.tag_to_class[:span] = Span
1762
1760
 
1763
1761
  # @return [HTMLElement]
1764
- def strong(*args)
1765
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "strong"))
1762
+ def strong(opts = {})
1763
+ HTMLElement.new(self, opts.merge(tag_name: "strong"))
1766
1764
  end
1767
1765
  # @return [HTMLElementCollection]
1768
- def strongs(*args)
1769
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "strong"))
1766
+ def strongs(opts = {})
1767
+ HTMLElementCollection.new(self, opts.merge(tag_name: "strong"))
1770
1768
  end
1771
1769
  Watir.tag_to_class[:strong] = HTMLElement
1772
1770
 
1773
1771
  # @return [Style]
1774
- def style(*args)
1775
- Style.new(self, extract_selector(args).merge(tag_name: "style"))
1772
+ def style(opts = {})
1773
+ Style.new(self, opts.merge(tag_name: "style"))
1776
1774
  end
1777
1775
  # @return [StyleCollection]
1778
- def styles(*args)
1779
- StyleCollection.new(self, extract_selector(args).merge(tag_name: "style"))
1776
+ def styles(opts = {})
1777
+ StyleCollection.new(self, opts.merge(tag_name: "style"))
1780
1778
  end
1781
1779
  Watir.tag_to_class[:style] = Style
1782
1780
 
1783
1781
  # @return [HTMLElement]
1784
- def sub(*args)
1785
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "sub"))
1782
+ def sub(opts = {})
1783
+ HTMLElement.new(self, opts.merge(tag_name: "sub"))
1786
1784
  end
1787
1785
  # @return [HTMLElementCollection]
1788
- def subs(*args)
1789
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "sub"))
1786
+ def subs(opts = {})
1787
+ HTMLElementCollection.new(self, opts.merge(tag_name: "sub"))
1790
1788
  end
1791
1789
  Watir.tag_to_class[:sub] = HTMLElement
1792
1790
 
1793
1791
  # @return [HTMLElement]
1794
- def summary(*args)
1795
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "summary"))
1792
+ def summary(opts = {})
1793
+ HTMLElement.new(self, opts.merge(tag_name: "summary"))
1796
1794
  end
1797
1795
  # @return [HTMLElementCollection]
1798
- def summaries(*args)
1799
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "summary"))
1796
+ def summaries(opts = {})
1797
+ HTMLElementCollection.new(self, opts.merge(tag_name: "summary"))
1800
1798
  end
1801
1799
  Watir.tag_to_class[:summary] = HTMLElement
1802
1800
 
1803
1801
  # @return [HTMLElement]
1804
- def sup(*args)
1805
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "sup"))
1802
+ def sup(opts = {})
1803
+ HTMLElement.new(self, opts.merge(tag_name: "sup"))
1806
1804
  end
1807
1805
  # @return [HTMLElementCollection]
1808
- def sups(*args)
1809
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "sup"))
1806
+ def sups(opts = {})
1807
+ HTMLElementCollection.new(self, opts.merge(tag_name: "sup"))
1810
1808
  end
1811
1809
  Watir.tag_to_class[:sup] = HTMLElement
1812
1810
 
1813
1811
  # @return [Table]
1814
- def table(*args)
1815
- Table.new(self, extract_selector(args).merge(tag_name: "table"))
1812
+ def table(opts = {})
1813
+ Table.new(self, opts.merge(tag_name: "table"))
1816
1814
  end
1817
1815
  # @return [TableCollection]
1818
- def tables(*args)
1819
- TableCollection.new(self, extract_selector(args).merge(tag_name: "table"))
1816
+ def tables(opts = {})
1817
+ TableCollection.new(self, opts.merge(tag_name: "table"))
1820
1818
  end
1821
1819
  Watir.tag_to_class[:table] = Table
1822
1820
 
1823
1821
  # @return [TableSection]
1824
- def tbody(*args)
1825
- TableSection.new(self, extract_selector(args).merge(tag_name: "tbody"))
1822
+ def tbody(opts = {})
1823
+ TableSection.new(self, opts.merge(tag_name: "tbody"))
1826
1824
  end
1827
1825
  # @return [TableSectionCollection]
1828
- def tbodys(*args)
1829
- TableSectionCollection.new(self, extract_selector(args).merge(tag_name: "tbody"))
1826
+ def tbodys(opts = {})
1827
+ TableSectionCollection.new(self, opts.merge(tag_name: "tbody"))
1830
1828
  end
1831
1829
  Watir.tag_to_class[:tbody] = TableSection
1832
1830
 
1833
1831
  # @return [TableDataCell]
1834
- def td(*args)
1835
- TableDataCell.new(self, extract_selector(args).merge(tag_name: "td"))
1832
+ def td(opts = {})
1833
+ TableDataCell.new(self, opts.merge(tag_name: "td"))
1836
1834
  end
1837
1835
  # @return [TableDataCellCollection]
1838
- def tds(*args)
1839
- TableDataCellCollection.new(self, extract_selector(args).merge(tag_name: "td"))
1836
+ def tds(opts = {})
1837
+ TableDataCellCollection.new(self, opts.merge(tag_name: "td"))
1840
1838
  end
1841
1839
  Watir.tag_to_class[:td] = TableDataCell
1842
1840
 
1843
1841
  # @return [Template]
1844
- def template(*args)
1845
- Template.new(self, extract_selector(args).merge(tag_name: "template"))
1842
+ def template(opts = {})
1843
+ Template.new(self, opts.merge(tag_name: "template"))
1846
1844
  end
1847
1845
  # @return [TemplateCollection]
1848
- def templates(*args)
1849
- TemplateCollection.new(self, extract_selector(args).merge(tag_name: "template"))
1846
+ def templates(opts = {})
1847
+ TemplateCollection.new(self, opts.merge(tag_name: "template"))
1850
1848
  end
1851
1849
  Watir.tag_to_class[:template] = Template
1852
1850
 
1853
1851
  # @return [TextArea]
1854
- def textarea(*args)
1855
- TextArea.new(self, extract_selector(args).merge(tag_name: "textarea"))
1852
+ def textarea(opts = {})
1853
+ TextArea.new(self, opts.merge(tag_name: "textarea"))
1856
1854
  end
1857
1855
  # @return [TextAreaCollection]
1858
- def textareas(*args)
1859
- TextAreaCollection.new(self, extract_selector(args).merge(tag_name: "textarea"))
1856
+ def textareas(opts = {})
1857
+ TextAreaCollection.new(self, opts.merge(tag_name: "textarea"))
1860
1858
  end
1861
1859
  Watir.tag_to_class[:textarea] = TextArea
1862
1860
 
1863
1861
  # @return [TableSection]
1864
- def tfoot(*args)
1865
- TableSection.new(self, extract_selector(args).merge(tag_name: "tfoot"))
1862
+ def tfoot(opts = {})
1863
+ TableSection.new(self, opts.merge(tag_name: "tfoot"))
1866
1864
  end
1867
1865
  # @return [TableSectionCollection]
1868
- def tfoots(*args)
1869
- TableSectionCollection.new(self, extract_selector(args).merge(tag_name: "tfoot"))
1866
+ def tfoots(opts = {})
1867
+ TableSectionCollection.new(self, opts.merge(tag_name: "tfoot"))
1870
1868
  end
1871
1869
  Watir.tag_to_class[:tfoot] = TableSection
1872
1870
 
1873
1871
  # @return [TableHeaderCell]
1874
- def th(*args)
1875
- TableHeaderCell.new(self, extract_selector(args).merge(tag_name: "th"))
1872
+ def th(opts = {})
1873
+ TableHeaderCell.new(self, opts.merge(tag_name: "th"))
1876
1874
  end
1877
1875
  # @return [TableHeaderCellCollection]
1878
- def ths(*args)
1879
- TableHeaderCellCollection.new(self, extract_selector(args).merge(tag_name: "th"))
1876
+ def ths(opts = {})
1877
+ TableHeaderCellCollection.new(self, opts.merge(tag_name: "th"))
1880
1878
  end
1881
1879
  Watir.tag_to_class[:th] = TableHeaderCell
1882
1880
 
1883
1881
  # @return [TableSection]
1884
- def thead(*args)
1885
- TableSection.new(self, extract_selector(args).merge(tag_name: "thead"))
1882
+ def thead(opts = {})
1883
+ TableSection.new(self, opts.merge(tag_name: "thead"))
1886
1884
  end
1887
1885
  # @return [TableSectionCollection]
1888
- def theads(*args)
1889
- TableSectionCollection.new(self, extract_selector(args).merge(tag_name: "thead"))
1886
+ def theads(opts = {})
1887
+ TableSectionCollection.new(self, opts.merge(tag_name: "thead"))
1890
1888
  end
1891
1889
  Watir.tag_to_class[:thead] = TableSection
1892
1890
 
1893
1891
  # @return [Time]
1894
- def time(*args)
1895
- Time.new(self, extract_selector(args).merge(tag_name: "time"))
1892
+ def time(opts = {})
1893
+ Time.new(self, opts.merge(tag_name: "time"))
1896
1894
  end
1897
1895
  # @return [TimeCollection]
1898
- def times(*args)
1899
- TimeCollection.new(self, extract_selector(args).merge(tag_name: "time"))
1896
+ def times(opts = {})
1897
+ TimeCollection.new(self, opts.merge(tag_name: "time"))
1900
1898
  end
1901
1899
  Watir.tag_to_class[:time] = Time
1902
1900
 
1903
1901
  # @return [Title]
1904
- def title(*args)
1905
- Title.new(self, extract_selector(args).merge(tag_name: "title"))
1902
+ def title(opts = {})
1903
+ Title.new(self, opts.merge(tag_name: "title"))
1906
1904
  end
1907
1905
  # @return [TitleCollection]
1908
- def titles(*args)
1909
- TitleCollection.new(self, extract_selector(args).merge(tag_name: "title"))
1906
+ def titles(opts = {})
1907
+ TitleCollection.new(self, opts.merge(tag_name: "title"))
1910
1908
  end
1911
1909
  Watir.tag_to_class[:title] = Title
1912
1910
 
1913
1911
  # @return [TableRow]
1914
- def tr(*args)
1915
- TableRow.new(self, extract_selector(args).merge(tag_name: "tr"))
1912
+ def tr(opts = {})
1913
+ TableRow.new(self, opts.merge(tag_name: "tr"))
1916
1914
  end
1917
1915
  # @return [TableRowCollection]
1918
- def trs(*args)
1919
- TableRowCollection.new(self, extract_selector(args).merge(tag_name: "tr"))
1916
+ def trs(opts = {})
1917
+ TableRowCollection.new(self, opts.merge(tag_name: "tr"))
1920
1918
  end
1921
1919
  Watir.tag_to_class[:tr] = TableRow
1922
1920
 
1923
1921
  # @return [Track]
1924
- def track(*args)
1925
- Track.new(self, extract_selector(args).merge(tag_name: "track"))
1922
+ def track(opts = {})
1923
+ Track.new(self, opts.merge(tag_name: "track"))
1926
1924
  end
1927
1925
  # @return [TrackCollection]
1928
- def tracks(*args)
1929
- TrackCollection.new(self, extract_selector(args).merge(tag_name: "track"))
1926
+ def tracks(opts = {})
1927
+ TrackCollection.new(self, opts.merge(tag_name: "track"))
1930
1928
  end
1931
1929
  Watir.tag_to_class[:track] = Track
1932
1930
 
1933
1931
  # @return [HTMLElement]
1934
- def u(*args)
1935
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "u"))
1932
+ def u(opts = {})
1933
+ HTMLElement.new(self, opts.merge(tag_name: "u"))
1936
1934
  end
1937
1935
  # @return [HTMLElementCollection]
1938
- def us(*args)
1939
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "u"))
1936
+ def us(opts = {})
1937
+ HTMLElementCollection.new(self, opts.merge(tag_name: "u"))
1940
1938
  end
1941
1939
  Watir.tag_to_class[:u] = HTMLElement
1942
1940
 
1943
1941
  # @return [UList]
1944
- def ul(*args)
1945
- UList.new(self, extract_selector(args).merge(tag_name: "ul"))
1942
+ def ul(opts = {})
1943
+ UList.new(self, opts.merge(tag_name: "ul"))
1946
1944
  end
1947
1945
  # @return [UListCollection]
1948
- def uls(*args)
1949
- UListCollection.new(self, extract_selector(args).merge(tag_name: "ul"))
1946
+ def uls(opts = {})
1947
+ UListCollection.new(self, opts.merge(tag_name: "ul"))
1950
1948
  end
1951
1949
  Watir.tag_to_class[:ul] = UList
1952
1950
 
1953
1951
  # @return [HTMLElement]
1954
- def var(*args)
1955
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "var"))
1952
+ def var(opts = {})
1953
+ HTMLElement.new(self, opts.merge(tag_name: "var"))
1956
1954
  end
1957
1955
  # @return [HTMLElementCollection]
1958
- def vars(*args)
1959
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "var"))
1956
+ def vars(opts = {})
1957
+ HTMLElementCollection.new(self, opts.merge(tag_name: "var"))
1960
1958
  end
1961
1959
  Watir.tag_to_class[:var] = HTMLElement
1962
1960
 
1963
1961
  # @return [Video]
1964
- def video(*args)
1965
- Video.new(self, extract_selector(args).merge(tag_name: "video"))
1962
+ def video(opts = {})
1963
+ Video.new(self, opts.merge(tag_name: "video"))
1966
1964
  end
1967
1965
  # @return [VideoCollection]
1968
- def videos(*args)
1969
- VideoCollection.new(self, extract_selector(args).merge(tag_name: "video"))
1966
+ def videos(opts = {})
1967
+ VideoCollection.new(self, opts.merge(tag_name: "video"))
1970
1968
  end
1971
1969
  Watir.tag_to_class[:video] = Video
1972
1970
 
1973
1971
  # @return [HTMLElement]
1974
- def wbr(*args)
1975
- HTMLElement.new(self, extract_selector(args).merge(tag_name: "wbr"))
1972
+ def wbr(opts = {})
1973
+ HTMLElement.new(self, opts.merge(tag_name: "wbr"))
1976
1974
  end
1977
1975
  # @return [HTMLElementCollection]
1978
- def wbrs(*args)
1979
- HTMLElementCollection.new(self, extract_selector(args).merge(tag_name: "wbr"))
1976
+ def wbrs(opts = {})
1977
+ HTMLElementCollection.new(self, opts.merge(tag_name: "wbr"))
1980
1978
  end
1981
1979
  Watir.tag_to_class[:wbr] = HTMLElement
1982
1980
  end # Container