watir 6.6.3 → 6.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +14 -0
  3. data/README.md +4 -4
  4. data/lib/watir.rb +1 -1
  5. data/lib/watir/adjacent.rb +13 -0
  6. data/lib/watir/attribute_helper.rb +0 -2
  7. data/lib/watir/browser.rb +1 -1
  8. data/lib/watir/capabilities.rb +7 -4
  9. data/lib/watir/element_collection.rb +14 -36
  10. data/lib/watir/elements/checkbox.rb +3 -0
  11. data/lib/watir/elements/element.rb +84 -2
  12. data/lib/watir/elements/font.rb +14 -0
  13. data/lib/watir/elements/hidden.rb +5 -0
  14. data/lib/watir/elements/html_elements.rb +126 -156
  15. data/lib/watir/elements/image.rb +0 -12
  16. data/lib/watir/elements/list.rb +49 -0
  17. data/lib/watir/elements/radio.rb +2 -0
  18. data/lib/watir/elements/row.rb +1 -1
  19. data/lib/watir/elements/select.rb +27 -37
  20. data/lib/watir/elements/svg_elements.rb +118 -172
  21. data/lib/watir/elements/table.rb +48 -14
  22. data/lib/watir/elements/table_cell.rb +27 -2
  23. data/lib/watir/elements/table_row.rb +18 -1
  24. data/lib/watir/generator/base/visitor.rb +6 -2
  25. data/lib/watir/generator/html/generator.rb +1 -1
  26. data/lib/watir/generator/svg/generator.rb +1 -1
  27. data/lib/watir/generator/svg/spec_extractor.rb +15 -8
  28. data/lib/watir/has_window.rb +17 -2
  29. data/lib/watir/locators/element/selector_builder/xpath.rb +1 -1
  30. data/lib/watir/window.rb +5 -2
  31. data/spec/browser_spec.rb +25 -23
  32. data/spec/locator_spec_helper.rb +1 -1
  33. data/spec/watirspec/adjacent_spec.rb +19 -0
  34. data/spec/watirspec/after_hooks_spec.rb +4 -4
  35. data/spec/watirspec/attributes_spec.rb +16 -0
  36. data/spec/watirspec/browser_spec.rb +2 -2
  37. data/spec/watirspec/elements/collections_spec.rb +1 -1
  38. data/spec/watirspec/elements/element_spec.rb +64 -0
  39. data/spec/watirspec/elements/hidden_spec.rb +6 -0
  40. data/spec/watirspec/elements/list_spec.rb +32 -0
  41. data/spec/watirspec/elements/ol_spec.rb +21 -21
  42. data/spec/watirspec/elements/select_list_spec.rb +16 -0
  43. data/spec/watirspec/elements/table_spec.rb +9 -1
  44. data/spec/watirspec/elements/td_spec.rb +23 -0
  45. data/spec/watirspec/html/forms_with_input_elements.html +7 -7
  46. data/spec/watirspec/wait_spec.rb +0 -13
  47. data/spec/watirspec/window_switching_spec.rb +6 -6
  48. data/support/doctest_helper.rb +11 -1
  49. data/watir.gemspec +1 -1
  50. metadata +7 -3
  51. data/lib/watir/elements/input.rb +0 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 972d136a4af0abe48641cb7703820f8d15dc82a2
4
- data.tar.gz: 41014e0e2977544fa86468ee3c91bb38e58f4f1c
3
+ metadata.gz: 18ce4184fd15427b0f00abf58aa9d036fd37d13f
4
+ data.tar.gz: 85f6b2e47e10b5c4b89f3c7d138fc58e143834bb
5
5
  SHA512:
6
- metadata.gz: ba15ccf0f48236f3ab0df7523f562c1b19698c46a87b441229b0ff6fe24ab4749d145bce682ba166bfb5fa67d28f5177ffce6c0c5110d88e2f698be35db4cd1b
7
- data.tar.gz: 54f53d8896b34ae1e6462b03347686e2fb16affc6e8e9f58bae598649a7f45b7f7de6186bc62aa1abf7881eb8ce0912b19adaf81c4bace186eabe01cbf89482e
6
+ metadata.gz: 4f0159b01a4c1be3f0d3bddbd3b4a8d7d676aad75dc82a33441f7e5a4cd6e367833bca63050cc5256ba906f78a9784fef1c16d1cb21c5266fd0744018b76a149
7
+ data.tar.gz: 912dfa7b7f8bf53acc6734a771ed86c98b1c71c4b5e1858f911611e1751213fb9d319a14d2595d378f26fc5b33766764c0b3213f47bf1b518356faa78cd7d6fe
data/CHANGES.md CHANGED
@@ -1,3 +1,17 @@
1
+ ### 6.7.0 (2017-08-14)
2
+
3
+ * Implement TableCell#column_header
4
+ * Add aliases to access Element methods in more ways
5
+ * Add methods on Element #scroll_into_view #location #size #height #center
6
+ * Fix bug preventing Safari Technology Preview usage
7
+ * Implement Browser#original_window
8
+ * Implement TableCell#sibling_from_header
9
+ * Fix bug preventing usage of switches with Chrome
10
+ * Fix bug of not waiting for SelectList when using options
11
+ * Allow OList, UList, TableRow, Table to be accessed like collections
12
+ * Implement Element#siblings
13
+ * Fix bug preventing locating elements by attribute
14
+
1
15
  ### 6.6.3 (2017-08-09)
2
16
 
3
17
  * Fix bug preventing usage of remote driver (#614)
data/README.md CHANGED
@@ -15,12 +15,12 @@ Watir Powered By Selenium!
15
15
  require 'watir'
16
16
 
17
17
  browser = Watir::Browser.new
18
- browser.goto 'google.com'
19
- browser.text_field(title: 'Search').set 'Hello World!'
20
- browser.button(type: 'submit').click
18
+
19
+ browser.goto 'watir.com'
20
+ browser.link(text: 'Documentation').click
21
21
 
22
22
  puts browser.title
23
- # => 'Hello World! - Google Search'
23
+ # => 'Documentation Watir Project...'
24
24
  browser.close
25
25
  ```
26
26
 
data/lib/watir.rb CHANGED
@@ -136,8 +136,8 @@ require 'watir/elements/form'
136
136
  require 'watir/elements/iframe'
137
137
  require 'watir/elements/hidden'
138
138
  require 'watir/elements/image'
139
- require 'watir/elements/input'
140
139
  require 'watir/elements/link'
140
+ require 'watir/elements/list'
141
141
  require 'watir/elements/option'
142
142
  require 'watir/elements/radio'
143
143
  require 'watir/elements/row'
@@ -67,6 +67,19 @@ module Watir
67
67
  end
68
68
  alias_method :next_siblings, :following_siblings
69
69
 
70
+
71
+ #
72
+ # Returns collection of siblings of current element, including current element.
73
+ #
74
+ # @example
75
+ # browser.text_field(name: "new_user_first_name").siblings.size
76
+ # #=> 56
77
+ #
78
+
79
+ def siblings(opt = {})
80
+ parent.children(opt)
81
+ end
82
+
70
83
  #
71
84
  # Returns element of direct child of current element.
72
85
  #
@@ -68,8 +68,6 @@ module Watir
68
68
 
69
69
  def define_string_attribute(mname, aname)
70
70
  define_method mname do
71
- # final w3c likely will not support className
72
- aname = :class if mname == :class_name
73
71
  attribute_value(aname).to_s
74
72
  end
75
73
  end
data/lib/watir/browser.rb CHANGED
@@ -9,7 +9,7 @@ module Watir
9
9
  include HasWindow
10
10
  include Waitable
11
11
 
12
- attr_writer :default_context
12
+ attr_writer :default_context, :original_window
13
13
  attr_reader :driver
14
14
  attr_reader :after_hooks
15
15
  alias_method :wd, :driver # ensures duck typing with Watir::Element
@@ -62,9 +62,9 @@ module Watir
62
62
 
63
63
  case @selenium_browser
64
64
  when :chrome
65
- if @options.key?(:args)
65
+ if @options.key?(:args) || @options.key?(:switches)
66
66
  browser_options ||= {}
67
- browser_options[:args] = @options.delete(:args).dup
67
+ browser_options[:args] = (@options.delete(:args) || @options.delete(:switches)).dup
68
68
  end
69
69
  if @options.delete(:headless)
70
70
  browser_options ||= {}
@@ -77,12 +77,15 @@ module Watir
77
77
  @selenium_opts[:options] = browser_options if browser_options.is_a? Selenium::WebDriver::Firefox::Options
78
78
  @selenium_opts[:options] ||= Selenium::WebDriver::Firefox::Options.new(options) if browser_options
79
79
  when :safari
80
- @selenium_opts["safari.options"] = {'technologyPreview' => true} if @options.delete(:technology_preview)
80
+ Selenium::WebDriver::Safari.technology_preview! if @options.delete(:technology_preview)
81
81
  when :remote
82
82
  if @browser == :chrome && @options.delete(:headless)
83
- args = @options.delete(:args) || []
83
+ args = @options.delete(:args) || @options.delete(:switches) || []
84
84
  @options['chromeOptions'] = {'args' => args + ['--headless', '--disable-gpu']}
85
85
  end
86
+ if @browser == :safari && @options.delete(:technology_preview)
87
+ @options["safari.options"] = {'technologyPreview' => true}
88
+ end
86
89
  end
87
90
  end
88
91
 
@@ -28,32 +28,10 @@ module Watir
28
28
  to_a.each(&blk)
29
29
  end
30
30
 
31
- #
32
- # Returns number of elements in collection.
33
- #
34
- # @return [Integer]
35
- #
36
-
37
- def length
38
- to_a.length
39
- end
40
- alias_method :size, :length
41
-
42
- #
43
- # Returns true if no elements are found
44
- #
45
- # @example
46
- # browser.select_list(name: "new_user_languages").options(class: 'not_here').empty?
47
- # #=> true
48
- #
49
- # @example
50
- # browser.select_list(name: "new_user_languages").options(id: 'danish').empty?
51
- # #=> false
52
- #
31
+ alias_method :length, :count
32
+ alias_method :size, :count
53
33
 
54
- def empty?
55
- length == 0
56
- end
34
+ alias_method :empty?, :none?
57
35
 
58
36
  #
59
37
  # Get the element at the given index.
@@ -69,16 +47,6 @@ module Watir
69
47
  to_a[idx] || element_class.new(@query_scope, @selector.merge(index: idx))
70
48
  end
71
49
 
72
- #
73
- # First element of this collection
74
- #
75
- # @return [Watir::Element] Returns an instance of a Watir::Element subclass
76
- #
77
-
78
- def first
79
- self[0]
80
- end
81
-
82
50
  #
83
51
  # Last element of the collection
84
52
  #
@@ -112,7 +80,17 @@ module Watir
112
80
  end
113
81
  end
114
82
  end
115
- alias_method :locate, :to_a
83
+
84
+ #
85
+ # Locate all elements and return self.
86
+ #
87
+ # @return ElementCollection
88
+ #
89
+
90
+ def locate
91
+ to_a
92
+ self
93
+ end
116
94
 
117
95
  #
118
96
  # Returns true if two element collections are equal.
@@ -18,6 +18,7 @@ module Watir
18
18
  def set(bool = true)
19
19
  set? == bool ? assert_enabled : click
20
20
  end
21
+ alias_method :check, :set
21
22
 
22
23
  #
23
24
  # Returns true if the element is checked
@@ -27,6 +28,7 @@ module Watir
27
28
  def set?
28
29
  element_call { @element.selected? }
29
30
  end
31
+ alias_method :checked?, :set?
30
32
 
31
33
  #
32
34
  # Unsets checkbox.
@@ -35,6 +37,7 @@ module Watir
35
37
  def clear
36
38
  set false
37
39
  end
40
+ alias_method :uncheck, :clear
38
41
 
39
42
  end # CheckBox
40
43
 
@@ -14,6 +14,7 @@ module Watir
14
14
  include Adjacent
15
15
 
16
16
  attr_accessor :keyword
17
+ attr_reader :selector
17
18
 
18
19
  #
19
20
  # temporarily add :id and :class_name manually since they're no longer specified in the HTML spec.
@@ -268,6 +269,7 @@ module Watir
268
269
  def attribute_value(attribute_name)
269
270
  element_call { @element.attribute attribute_name }
270
271
  end
272
+ alias_method :attribute, :attribute_value
271
273
 
272
274
  #
273
275
  # Returns outer (inner + element itself) HTML code of element.
@@ -282,7 +284,6 @@ module Watir
282
284
  def outer_html
283
285
  element_call { execute_atom(:getOuterHtml, @element) }.strip
284
286
  end
285
-
286
287
  alias_method :html, :outer_html
287
288
 
288
289
  #
@@ -351,6 +352,87 @@ module Watir
351
352
  element_call { execute_atom :fireEvent, @element, event_name }
352
353
  end
353
354
 
355
+ #
356
+ # Scroll until the element is in the view screen
357
+ #
358
+ # @example
359
+ # browser.button(name: "new_user_button").scroll_into_view
360
+ #
361
+ # @return [Selenium::WebDriver::Point]
362
+ #
363
+
364
+ def scroll_into_view
365
+ element_call { @element.location_once_scrolled_into_view }
366
+ end
367
+
368
+ #
369
+ # location of element (x, y)
370
+ #
371
+ # @example
372
+ # browser.button(name: "new_user_button").location
373
+ #
374
+ # @return [Selenium::WebDriver::Point]
375
+ #
376
+
377
+ def location
378
+ element_call { @element.location }
379
+ end
380
+
381
+ #
382
+ # size of element (width, height)
383
+ #
384
+ # @example
385
+ # browser.button(name: "new_user_button").size
386
+ #
387
+ # @return [Selenium::WebDriver::Dimension]
388
+ #
389
+
390
+ def size
391
+ element_call { @element.size }
392
+ end
393
+
394
+ #
395
+ # Get height of element
396
+ #
397
+ # @example
398
+ # browser.button(name: "new_user_button").height
399
+ #
400
+ # @return [Selenium::WebDriver::Dimension]
401
+ #
402
+
403
+ def height
404
+ size['height']
405
+ end
406
+
407
+ #
408
+ # Get width of element
409
+ #
410
+ # @example
411
+ # browser.button(name: "new_user_button").width
412
+ #
413
+ # @return [Selenium::WebDriver::Dimension]
414
+ #
415
+
416
+ def width
417
+ size['width']
418
+ end
419
+
420
+ #
421
+ # Get centre coordinates of element
422
+ #
423
+ # @example
424
+ # browser.button(name: "new_user_button").centre
425
+ #
426
+ # @return [Selenium::WebDriver::Point]
427
+ #
428
+
429
+ def center
430
+ location = location()
431
+ Selenium::WebDriver::Point.new(location.x + (width/2),
432
+ location.y + (height/2))
433
+ end
434
+ alias_method :centre, :center
435
+
354
436
  #
355
437
  # @api private
356
438
  #
@@ -510,7 +592,7 @@ module Watir
510
592
  return if present?
511
593
 
512
594
  begin
513
- @query_scope.wait_for_present
595
+ @query_scope.wait_for_present unless @query_scope.is_a? Browser
514
596
  wait_until_present
515
597
  rescue Watir::Wait::TimeoutError
516
598
  msg = "element located, but timed out after #{Watir.default_timeout} seconds, waiting for #{inspect} to be present"
@@ -1,4 +1,18 @@
1
1
  module Watir
2
+ class Font < HTMLElement
3
+
4
+ #
5
+ # size of font
6
+ #
7
+ # @return [Integer]
8
+ #
9
+
10
+ def size
11
+ attribute_value(:size)
12
+ end
13
+
14
+ end # Font
15
+
2
16
  module Container
3
17
  def font(*args)
4
18
  Font.new(self, extract_selector(args).merge(tag_name: "font"))
@@ -3,6 +3,11 @@ module Watir
3
3
  def visible?
4
4
  false
5
5
  end
6
+
7
+ def click
8
+ raise Watir::Exception::ObjectDisabledException, "click is not available on the hidden field element"
9
+ end
10
+
6
11
  end
7
12
 
8
13
  module Container
@@ -7,11 +7,11 @@ module Watir
7
7
  attribute(String, :dir, :dir)
8
8
  attribute(String, :dataset, :dataset)
9
9
  attribute("Boolean", :hidden?, :hidden)
10
- attribute(Integer, :tab_index, :tabIndex)
11
- attribute(String, :access_key, :accessKey)
10
+ attribute(Integer, :tabindex, :tabIndex)
11
+ attribute(String, :accesskey, :accessKey)
12
12
  attribute("Boolean", :draggable?, :draggable)
13
13
  attribute(String, :dropzone, :dropzone)
14
- attribute(String, :context_menu, :contextMenu)
14
+ attribute(String, :contextmenu, :contextMenu)
15
15
  attribute("Boolean", :spellcheck?, :spellcheck)
16
16
  attribute(String, :onabort, :onabort)
17
17
  attribute(String, :onblur, :onblur)
@@ -85,7 +85,6 @@ module Watir
85
85
  class Font < HTMLElement
86
86
  attribute(String, :color, :color)
87
87
  attribute(String, :face, :face)
88
- attribute(String, :size, :size)
89
88
  end
90
89
  class FontCollection < ElementCollection
91
90
  end
@@ -119,16 +118,14 @@ module Watir
119
118
 
120
119
  class Marquee < HTMLElement
121
120
  attribute(String, :behavior, :behavior)
122
- attribute(String, :bg_color, :bgColor)
121
+ attribute(String, :bgcolor, :bgColor)
123
122
  attribute(String, :direction, :direction)
124
- attribute(String, :height, :height)
125
123
  attribute(Integer, :hspace, :hspace)
126
124
  attribute(Integer, :loop, :loop)
127
- attribute(Integer, :scroll_amount, :scrollAmount)
128
- attribute(Integer, :scroll_delay, :scrollDelay)
129
- attribute("Boolean", :true_speed?, :trueSpeed)
125
+ attribute(Integer, :scrollamount, :scrollAmount)
126
+ attribute(Integer, :scrolldelay, :scrollDelay)
127
+ attribute("Boolean", :truespeed?, :trueSpeed)
130
128
  attribute(Integer, :vspace, :vspace)
131
- attribute(String, :width, :width)
132
129
  attribute(String, :onbounce, :onbounce)
133
130
  attribute(String, :onfinish, :onfinish)
134
131
  attribute(String, :onstart, :onstart)
@@ -141,20 +138,16 @@ module Watir
141
138
  attribute(String, :alt, :alt)
142
139
  attribute(String, :archive, :archive)
143
140
  attribute(String, :code, :code)
144
- attribute(String, :code_base, :codeBase)
145
- attribute(String, :height, :height)
141
+ attribute(String, :codebase, :codeBase)
146
142
  attribute(Integer, :hspace, :hspace)
147
143
  attribute(String, :name, :name)
148
144
  attribute(String, :object, :object)
149
145
  attribute(Integer, :vspace, :vspace)
150
- attribute(String, :width, :width)
151
146
  end
152
147
  class AppletCollection < ElementCollection
153
148
  end
154
149
 
155
150
  class Canvas < HTMLElement
156
- attribute(Integer, :width, :width)
157
- attribute(Integer, :height, :height)
158
151
  end
159
152
  class CanvasCollection < ElementCollection
160
153
  end
@@ -171,7 +164,7 @@ module Watir
171
164
  attribute(String, :charset, :charset)
172
165
  attribute("Boolean", :async?, :async)
173
166
  attribute("Boolean", :defer?, :defer)
174
- attribute(String, :cross_origin, :crossOrigin)
167
+ attribute(String, :crossorigin, :crossOrigin)
175
168
  attribute(String, :nonce, :nonce)
176
169
  attribute(String, :event, :event)
177
170
  attribute(String, :for, :htmlFor)
@@ -217,9 +210,9 @@ module Watir
217
210
  attribute(String, :form, :form)
218
211
  attribute(String, :name, :name)
219
212
  attribute(String, :type, :type)
220
- attribute("Boolean", :will_validate?, :willValidate)
213
+ attribute("Boolean", :willvalidate?, :willValidate)
221
214
  attribute(String, :validity, :validity)
222
- attribute(String, :validation_message, :validationMessage)
215
+ attribute(String, :validationmessage, :validationMessage)
223
216
  end
224
217
  class FieldSetCollection < ElementCollection
225
218
  end
@@ -250,11 +243,11 @@ module Watir
250
243
  attribute(String, :form, :form)
251
244
  attribute(String, :name, :name)
252
245
  attribute(String, :type, :type)
253
- attribute(String, :default_value, :defaultValue)
246
+ attribute(String, :defaultvalue, :defaultValue)
254
247
  attribute(String, :value, :value)
255
- attribute("Boolean", :will_validate?, :willValidate)
248
+ attribute("Boolean", :willvalidate?, :willValidate)
256
249
  attribute(String, :validity, :validity)
257
- attribute(String, :validation_message, :validationMessage)
250
+ attribute(String, :validationmessage, :validationMessage)
258
251
  attribute(String, :labels, :labels)
259
252
  end
260
253
  class OutputCollection < ElementCollection
@@ -268,9 +261,9 @@ module Watir
268
261
  attribute(String, :keytype, :keytype)
269
262
  attribute(String, :name, :name)
270
263
  attribute(String, :type, :type)
271
- attribute("Boolean", :will_validate?, :willValidate)
264
+ attribute("Boolean", :willvalidate?, :willValidate)
272
265
  attribute(String, :validity, :validity)
273
- attribute(String, :validation_message, :validationMessage)
266
+ attribute(String, :validationmessage, :validationMessage)
274
267
  attribute(String, :labels, :labels)
275
268
  end
276
269
  class KeygenCollection < ElementCollection
@@ -280,28 +273,28 @@ module Watir
280
273
  attribute(String, :autocomplete, :autocomplete)
281
274
  attribute("Boolean", :autofocus?, :autofocus)
282
275
  attribute(Integer, :cols, :cols)
283
- attribute(String, :dir_name, :dirName)
276
+ attribute(String, :dirname, :dirName)
284
277
  attribute("Boolean", :disabled?, :disabled)
285
278
  attribute(String, :form, :form)
286
- attribute(String, :input_mode, :inputMode)
287
- attribute(Integer, :max_length, :maxLength)
288
- attribute(Integer, :min_length, :minLength)
279
+ attribute(String, :inputmode, :inputMode)
280
+ attribute(Integer, :maxlength, :maxLength)
281
+ attribute(Integer, :minlength, :minLength)
289
282
  attribute(String, :name, :name)
290
283
  attribute(String, :placeholder, :placeholder)
291
- attribute("Boolean", :read_only?, :readOnly)
284
+ attribute("Boolean", :readonly?, :readOnly)
292
285
  attribute("Boolean", :required?, :required)
293
286
  attribute(String, :wrap, :wrap)
294
287
  attribute(String, :type, :type)
295
- attribute(String, :default_value, :defaultValue)
288
+ attribute(String, :defaultvalue, :defaultValue)
296
289
  attribute(String, :value, :value)
297
- attribute(Integer, :text_length, :textLength)
298
- attribute("Boolean", :will_validate?, :willValidate)
290
+ attribute(Integer, :textlength, :textLength)
291
+ attribute("Boolean", :willvalidate?, :willValidate)
299
292
  attribute(String, :validity, :validity)
300
- attribute(String, :validation_message, :validationMessage)
293
+ attribute(String, :validationmessage, :validationMessage)
301
294
  attribute(String, :labels, :labels)
302
- attribute(Integer, :selection_start, :selectionStart)
303
- attribute(Integer, :selection_end, :selectionEnd)
304
- attribute(String, :selection_direction, :selectionDirection)
295
+ attribute(Integer, :selectionstart, :selectionStart)
296
+ attribute(Integer, :selectionend, :selectionEnd)
297
+ attribute(String, :selectiondirection, :selectionDirection)
305
298
  end
306
299
  class TextAreaCollection < ElementCollection
307
300
  end
@@ -310,7 +303,7 @@ module Watir
310
303
  attribute("Boolean", :disabled?, :disabled)
311
304
  attribute(String, :form, :form)
312
305
  attribute(String, :label, :label)
313
- attribute("Boolean", :default_selected?, :defaultSelected)
306
+ attribute("Boolean", :defaultselected?, :defaultSelected)
314
307
  attribute("Boolean", :selected?, :selected)
315
308
  attribute(String, :value, :value)
316
309
  attribute(Integer, :index, :index)
@@ -339,16 +332,15 @@ module Watir
339
332
  attribute("Boolean", :multiple?, :multiple)
340
333
  attribute(String, :name, :name)
341
334
  attribute("Boolean", :required?, :required)
342
- attribute(Integer, :size, :size)
343
335
  attribute(String, :type, :type)
344
336
  attribute(String, :options, :options)
345
337
  attribute(Integer, :length, :length)
346
- attribute(String, :selected_options, :selectedOptions)
347
- attribute(Integer, :selected_index, :selectedIndex)
338
+ attribute(String, :selectedoptions, :selectedOptions)
339
+ attribute(Integer, :selectedindex, :selectedIndex)
348
340
  attribute(String, :value, :value)
349
- attribute("Boolean", :will_validate?, :willValidate)
341
+ attribute("Boolean", :willvalidate?, :willValidate)
350
342
  attribute(String, :validity, :validity)
351
- attribute(String, :validation_message, :validationMessage)
343
+ attribute(String, :validationmessage, :validationMessage)
352
344
  attribute(String, :labels, :labels)
353
345
  end
354
346
  class SelectCollection < ElementCollection
@@ -358,18 +350,18 @@ module Watir
358
350
  attribute("Boolean", :autofocus?, :autofocus)
359
351
  attribute("Boolean", :disabled?, :disabled)
360
352
  attribute(String, :form, :form)
361
- attribute(String, :form_action, :formAction)
362
- attribute(String, :form_enctype, :formEnctype)
363
- attribute(String, :form_method, :formMethod)
364
- attribute("Boolean", :form_no_validate?, :formNoValidate)
365
- attribute(String, :form_target, :formTarget)
353
+ attribute(String, :formaction, :formAction)
354
+ attribute(String, :formenctype, :formEnctype)
355
+ attribute(String, :formmethod, :formMethod)
356
+ attribute("Boolean", :formnovalidate?, :formNoValidate)
357
+ attribute(String, :formtarget, :formTarget)
366
358
  attribute(String, :name, :name)
367
359
  attribute(String, :type, :type)
368
360
  attribute(String, :value, :value)
369
361
  attribute(String, :menu, :menu)
370
- attribute("Boolean", :will_validate?, :willValidate)
362
+ attribute("Boolean", :willvalidate?, :willValidate)
371
363
  attribute(String, :validity, :validity)
372
- attribute(String, :validation_message, :validationMessage)
364
+ attribute(String, :validationmessage, :validationMessage)
373
365
  attribute(String, :labels, :labels)
374
366
  end
375
367
  class ButtonCollection < ElementCollection
@@ -380,49 +372,46 @@ module Watir
380
372
  attribute(String, :alt, :alt)
381
373
  attribute(String, :autocomplete, :autocomplete)
382
374
  attribute("Boolean", :autofocus?, :autofocus)
383
- attribute("Boolean", :default_checked?, :defaultChecked)
375
+ attribute("Boolean", :defaultchecked?, :defaultChecked)
384
376
  attribute("Boolean", :checked?, :checked)
385
- attribute(String, :dir_name, :dirName)
377
+ attribute(String, :dirname, :dirName)
386
378
  attribute("Boolean", :disabled?, :disabled)
387
379
  attribute(String, :form, :form)
388
380
  attribute(String, :files, :files)
389
- attribute(String, :form_action, :formAction)
390
- attribute(String, :form_enctype, :formEnctype)
391
- attribute(String, :form_method, :formMethod)
392
- attribute("Boolean", :form_no_validate?, :formNoValidate)
393
- attribute(String, :form_target, :formTarget)
394
- attribute(Integer, :height, :height)
381
+ attribute(String, :formaction, :formAction)
382
+ attribute(String, :formenctype, :formEnctype)
383
+ attribute(String, :formmethod, :formMethod)
384
+ attribute("Boolean", :formnovalidate?, :formNoValidate)
385
+ attribute(String, :formtarget, :formTarget)
395
386
  attribute("Boolean", :indeterminate?, :indeterminate)
396
- attribute(String, :input_mode, :inputMode)
387
+ attribute(String, :inputmode, :inputMode)
397
388
  attribute(String, :list, :list)
398
389
  attribute(String, :max, :max)
399
- attribute(Integer, :max_length, :maxLength)
390
+ attribute(Integer, :maxlength, :maxLength)
400
391
  attribute(String, :min, :min)
401
- attribute(Integer, :min_length, :minLength)
392
+ attribute(Integer, :minlength, :minLength)
402
393
  attribute("Boolean", :multiple?, :multiple)
403
394
  attribute(String, :name, :name)
404
395
  attribute(String, :pattern, :pattern)
405
396
  attribute(String, :placeholder, :placeholder)
406
- attribute("Boolean", :read_only?, :readOnly)
397
+ attribute("Boolean", :readonly?, :readOnly)
407
398
  attribute("Boolean", :required?, :required)
408
- attribute(Integer, :size, :size)
409
399
  attribute(String, :src, :src)
410
400
  attribute(String, :step, :step)
411
401
  attribute(String, :type, :type)
412
- attribute(String, :default_value, :defaultValue)
402
+ attribute(String, :defaultvalue, :defaultValue)
413
403
  attribute(String, :value, :value)
414
- attribute(String, :value_as_date, :valueAsDate)
415
- attribute(Float, :value_as_number, :valueAsNumber)
416
- attribute(Integer, :width, :width)
417
- attribute("Boolean", :will_validate?, :willValidate)
404
+ attribute(String, :valueasdate, :valueAsDate)
405
+ attribute(Float, :valueasnumber, :valueAsNumber)
406
+ attribute("Boolean", :willvalidate?, :willValidate)
418
407
  attribute(String, :validity, :validity)
419
- attribute(String, :validation_message, :validationMessage)
408
+ attribute(String, :validationmessage, :validationMessage)
420
409
  attribute(String, :labels, :labels)
421
- attribute(Integer, :selection_start, :selectionStart)
422
- attribute(Integer, :selection_end, :selectionEnd)
423
- attribute(String, :selection_direction, :selectionDirection)
410
+ attribute(Integer, :selectionstart, :selectionStart)
411
+ attribute(Integer, :selectionend, :selectionEnd)
412
+ attribute(String, :selectiondirection, :selectionDirection)
424
413
  attribute(String, :align, :align)
425
- attribute(String, :use_map, :useMap)
414
+ attribute(String, :usemap, :useMap)
426
415
  end
427
416
  class InputCollection < ElementCollection
428
417
  end
@@ -443,7 +432,7 @@ module Watir
443
432
  attribute(String, :encoding, :encoding)
444
433
  attribute(String, :method, :method)
445
434
  attribute(String, :name, :name)
446
- attribute("Boolean", :no_validate?, :noValidate)
435
+ attribute("Boolean", :novalidate?, :noValidate)
447
436
  attribute(String, :target, :target)
448
437
  attribute(Integer, :length, :length)
449
438
  end
@@ -451,19 +440,17 @@ module Watir
451
440
  end
452
441
 
453
442
  class TableCell < HTMLElement
454
- attribute(Integer, :col_span, :colSpan)
455
- attribute(Integer, :row_span, :rowSpan)
443
+ attribute(Integer, :colspan, :colSpan)
444
+ attribute(Integer, :rowspan, :rowSpan)
456
445
  attribute(String, :headers, :headers)
457
- attribute(Integer, :cell_index, :cellIndex)
446
+ attribute(Integer, :cellindex, :cellIndex)
458
447
  attribute(String, :align, :align)
459
448
  attribute(String, :axis, :axis)
460
- attribute(String, :height, :height)
461
- attribute(String, :width, :width)
462
449
  attribute(String, :ch, :ch)
463
- attribute(String, :ch_off, :chOff)
464
- attribute("Boolean", :no_wrap?, :noWrap)
465
- attribute(String, :v_align, :vAlign)
466
- attribute(String, :bg_color, :bgColor)
450
+ attribute(String, :choff, :chOff)
451
+ attribute("Boolean", :nowrap?, :noWrap)
452
+ attribute(String, :valign, :vAlign)
453
+ attribute(String, :bgcolor, :bgColor)
467
454
  end
468
455
  class TableCellCollection < ElementCollection
469
456
  end
@@ -482,13 +469,13 @@ module Watir
482
469
  end
483
470
 
484
471
  class TableRow < HTMLElement
485
- attribute(Integer, :row_index, :rowIndex)
486
- attribute(Integer, :section_row_index, :sectionRowIndex)
472
+ attribute(Integer, :rowindex, :rowIndex)
473
+ attribute(Integer, :sectionrowindex, :sectionRowIndex)
487
474
  attribute(String, :align, :align)
488
475
  attribute(String, :ch, :ch)
489
- attribute(String, :ch_off, :chOff)
490
- attribute(String, :v_align, :vAlign)
491
- attribute(String, :bg_color, :bgColor)
476
+ attribute(String, :choff, :chOff)
477
+ attribute(String, :valign, :vAlign)
478
+ attribute(String, :bgcolor, :bgColor)
492
479
  end
493
480
  class TableRowCollection < ElementCollection
494
481
  end
@@ -496,8 +483,8 @@ module Watir
496
483
  class TableSection < HTMLElement
497
484
  attribute(String, :align, :align)
498
485
  attribute(String, :ch, :ch)
499
- attribute(String, :ch_off, :chOff)
500
- attribute(String, :v_align, :vAlign)
486
+ attribute(String, :choff, :chOff)
487
+ attribute(String, :valign, :vAlign)
501
488
  end
502
489
  class TableSectionCollection < ElementCollection
503
490
  end
@@ -505,9 +492,8 @@ module Watir
505
492
  class TableCol < HTMLElement
506
493
  attribute(String, :align, :align)
507
494
  attribute(String, :ch, :ch)
508
- attribute(String, :ch_off, :chOff)
509
- attribute(String, :v_align, :vAlign)
510
- attribute(String, :width, :width)
495
+ attribute(String, :choff, :chOff)
496
+ attribute(String, :valign, :vAlign)
511
497
  end
512
498
  class TableColCollection < ElementCollection
513
499
  end
@@ -520,18 +506,15 @@ module Watir
520
506
 
521
507
  class Table < HTMLElement
522
508
  attribute(String, :caption, :caption)
523
- attribute(String, :t_head, :tHead)
524
- attribute(String, :t_foot, :tFoot)
525
- attribute(String, :t_bodies, :tBodies)
509
+ attribute(String, :tbodies, :tBodies)
526
510
  attribute(String, :align, :align)
527
511
  attribute(String, :border, :border)
528
512
  attribute(String, :frame, :frame)
529
513
  attribute(String, :rules, :rules)
530
514
  attribute(String, :summary, :summary)
531
- attribute(String, :width, :width)
532
- attribute(String, :bg_color, :bgColor)
533
- attribute(String, :cell_padding, :cellPadding)
534
- attribute(String, :cell_spacing, :cellSpacing)
515
+ attribute(String, :bgcolor, :bgColor)
516
+ attribute(String, :cellpadding, :cellPadding)
517
+ attribute(String, :cellspacing, :cellSpacing)
535
518
  end
536
519
  class TableCollection < ElementCollection
537
520
  end
@@ -543,10 +526,10 @@ module Watir
543
526
  attribute(String, :target, :target)
544
527
  attribute(String, :download, :download)
545
528
  attribute(String, :rel, :rel)
546
- attribute(String, :rel_list, :relList)
529
+ attribute(String, :rellist, :relList)
547
530
  attribute(String, :hreflang, :hreflang)
548
531
  attribute(String, :type, :type)
549
- attribute("Boolean", :no_href?, :noHref)
532
+ attribute("Boolean", :nohref?, :noHref)
550
533
  attribute(String, :href, :href)
551
534
  attribute(String, :origin, :origin)
552
535
  attribute(String, :protocol, :protocol)
@@ -572,19 +555,19 @@ module Watir
572
555
  class Media < HTMLElement
573
556
  attribute(String, :error, :error)
574
557
  attribute(String, :src, :src)
575
- attribute(String, :src_object, :srcObject)
576
- attribute(String, :current_src, :currentSrc)
577
- attribute(String, :cross_origin, :crossOrigin)
578
- attribute(Integer, :network_state, :networkState)
558
+ attribute(String, :srcobject, :srcObject)
559
+ attribute(String, :currentsrc, :currentSrc)
560
+ attribute(String, :crossorigin, :crossOrigin)
561
+ attribute(Integer, :networkstate, :networkState)
579
562
  attribute(String, :preload, :preload)
580
563
  attribute(String, :buffered, :buffered)
581
- attribute(Integer, :ready_state, :readyState)
564
+ attribute(Integer, :readystate, :readyState)
582
565
  attribute("Boolean", :seeking?, :seeking)
583
- attribute(Float, :current_time, :currentTime)
566
+ attribute(Float, :currenttime, :currentTime)
584
567
  attribute(Float, :duration, :duration)
585
568
  attribute("Boolean", :paused?, :paused)
586
- attribute(Float, :default_playback_rate, :defaultPlaybackRate)
587
- attribute(Float, :playback_rate, :playbackRate)
569
+ attribute(Float, :defaultplaybackrate, :defaultPlaybackRate)
570
+ attribute(Float, :playbackrate, :playbackRate)
588
571
  attribute(String, :played, :played)
589
572
  attribute(String, :seekable, :seekable)
590
573
  attribute("Boolean", :ended?, :ended)
@@ -593,10 +576,10 @@ module Watir
593
576
  attribute("Boolean", :controls?, :controls)
594
577
  attribute(Float, :volume, :volume)
595
578
  attribute("Boolean", :muted?, :muted)
596
- attribute("Boolean", :default_muted?, :defaultMuted)
597
- attribute(String, :audio_tracks, :audioTracks)
598
- attribute(String, :video_tracks, :videoTracks)
599
- attribute(String, :text_tracks, :textTracks)
579
+ attribute("Boolean", :defaultmuted?, :defaultMuted)
580
+ attribute(String, :audiotracks, :audioTracks)
581
+ attribute(String, :videotracks, :videoTracks)
582
+ attribute(String, :texttracks, :textTracks)
600
583
  end
601
584
  class MediaCollection < ElementCollection
602
585
  end
@@ -607,10 +590,8 @@ module Watir
607
590
  end
608
591
 
609
592
  class Video < Media
610
- attribute(Integer, :width, :width)
611
- attribute(Integer, :height, :height)
612
- attribute(Integer, :video_width, :videoWidth)
613
- attribute(Integer, :video_height, :videoHeight)
593
+ attribute(Integer, :videowidth, :videoWidth)
594
+ attribute(Integer, :videoheight, :videoHeight)
614
595
  attribute(String, :poster, :poster)
615
596
  end
616
597
  class VideoCollection < ElementCollection
@@ -622,7 +603,7 @@ module Watir
622
603
  attribute(String, :srclang, :srclang)
623
604
  attribute(String, :label, :label)
624
605
  attribute("Boolean", :default?, :default)
625
- attribute(Integer, :ready_state, :readyState)
606
+ attribute(Integer, :readystate, :readyState)
626
607
  attribute(String, :track, :track)
627
608
  end
628
609
  class TrackCollection < ElementCollection
@@ -632,7 +613,7 @@ module Watir
632
613
  attribute(String, :name, :name)
633
614
  attribute(String, :value, :value)
634
615
  attribute(String, :type, :type)
635
- attribute(String, :value_type, :valueType)
616
+ attribute(String, :valuetype, :valueType)
636
617
  end
637
618
  class ParamCollection < ElementCollection
638
619
  end
@@ -640,16 +621,14 @@ module Watir
640
621
  class Object < HTMLElement
641
622
  attribute(String, :data, :data)
642
623
  attribute(String, :type, :type)
643
- attribute("Boolean", :type_must_match?, :typeMustMatch)
624
+ attribute("Boolean", :typemustmatch?, :typeMustMatch)
644
625
  attribute(String, :name, :name)
645
626
  attribute(String, :form, :form)
646
- attribute(String, :width, :width)
647
- attribute(String, :height, :height)
648
- attribute(String, :content_document, :contentDocument)
649
- attribute(String, :content_window, :contentWindow)
650
- attribute("Boolean", :will_validate?, :willValidate)
627
+ attribute(String, :contentdocument, :contentDocument)
628
+ attribute(String, :contentwindow, :contentWindow)
629
+ attribute("Boolean", :willvalidate?, :willValidate)
651
630
  attribute(String, :validity, :validity)
652
- attribute(String, :validation_message, :validationMessage)
631
+ attribute(String, :validationmessage, :validationMessage)
653
632
  attribute(String, :align, :align)
654
633
  attribute(String, :archive, :archive)
655
634
  attribute(String, :code, :code)
@@ -657,9 +636,9 @@ module Watir
657
636
  attribute(Integer, :hspace, :hspace)
658
637
  attribute(String, :standby, :standby)
659
638
  attribute(Integer, :vspace, :vspace)
660
- attribute(String, :code_base, :codeBase)
661
- attribute(String, :code_type, :codeType)
662
- attribute(String, :use_map, :useMap)
639
+ attribute(String, :codebase, :codeBase)
640
+ attribute(String, :codetype, :codeType)
641
+ attribute(String, :usemap, :useMap)
663
642
  attribute(String, :border, :border)
664
643
  end
665
644
  class ObjectCollection < ElementCollection
@@ -668,8 +647,6 @@ module Watir
668
647
  class Embed < HTMLElement
669
648
  attribute(String, :src, :src)
670
649
  attribute(String, :type, :type)
671
- attribute(String, :width, :width)
672
- attribute(String, :height, :height)
673
650
  attribute(String, :align, :align)
674
651
  attribute(String, :name, :name)
675
652
  end
@@ -681,16 +658,14 @@ module Watir
681
658
  attribute(String, :srcdoc, :srcdoc)
682
659
  attribute(String, :name, :name)
683
660
  attribute(String, :sandbox, :sandbox)
684
- attribute("Boolean", :allow_fullscreen?, :allowFullscreen)
685
- attribute(String, :width, :width)
686
- attribute(String, :height, :height)
687
- attribute(String, :content_document, :contentDocument)
688
- attribute(String, :content_window, :contentWindow)
661
+ attribute("Boolean", :allowfullscreen?, :allowFullscreen)
662
+ attribute(String, :contentdocument, :contentDocument)
663
+ attribute(String, :contentwindow, :contentWindow)
689
664
  attribute(String, :align, :align)
690
665
  attribute(String, :scrolling, :scrolling)
691
- attribute(String, :frame_border, :frameBorder)
692
- attribute(String, :margin_height, :marginHeight)
693
- attribute(String, :margin_width, :marginWidth)
666
+ attribute(String, :frameborder, :frameBorder)
667
+ attribute(String, :marginheight, :marginHeight)
668
+ attribute(String, :marginwidth, :marginWidth)
694
669
  end
695
670
  class IFrameCollection < ElementCollection
696
671
  end
@@ -700,15 +675,13 @@ module Watir
700
675
  attribute(String, :src, :src)
701
676
  attribute(String, :srcset, :srcset)
702
677
  attribute(String, :sizes, :sizes)
703
- attribute(String, :cross_origin, :crossOrigin)
704
- attribute(String, :use_map, :useMap)
705
- attribute("Boolean", :map?, :isMap)
706
- attribute(Integer, :width, :width)
707
- attribute(Integer, :height, :height)
708
- attribute(Integer, :natural_width, :naturalWidth)
709
- attribute(Integer, :natural_height, :naturalHeight)
678
+ attribute(String, :crossorigin, :crossOrigin)
679
+ attribute(String, :usemap, :useMap)
680
+ attribute("Boolean", :ismap?, :isMap)
681
+ attribute(Integer, :naturalwidth, :naturalWidth)
682
+ attribute(Integer, :naturalheight, :naturalHeight)
710
683
  attribute("Boolean", :complete?, :complete)
711
- attribute(String, :current_src, :currentSrc)
684
+ attribute(String, :currentsrc, :currentSrc)
712
685
  attribute(String, :name, :name)
713
686
  attribute(String, :lowsrc, :lowsrc)
714
687
  attribute(String, :align, :align)
@@ -736,7 +709,7 @@ module Watir
736
709
 
737
710
  class Mod < HTMLElement
738
711
  attribute(String, :cite, :cite)
739
- attribute(String, :date_time, :dateTime)
712
+ attribute(String, :datetime, :dateTime)
740
713
  end
741
714
  class ModCollection < ElementCollection
742
715
  end
@@ -753,7 +726,7 @@ module Watir
753
726
  end
754
727
 
755
728
  class Time < HTMLElement
756
- attribute(String, :date_time, :dateTime)
729
+ attribute(String, :datetime, :dateTime)
757
730
  end
758
731
  class TimeCollection < ElementCollection
759
732
  end
@@ -769,7 +742,7 @@ module Watir
769
742
  attribute(String, :download, :download)
770
743
  attribute(String, :rel, :rel)
771
744
  attribute(String, :rev, :rev)
772
- attribute(String, :rel_list, :relList)
745
+ attribute(String, :rellist, :relList)
773
746
  attribute(String, :hreflang, :hreflang)
774
747
  attribute(String, :type, :type)
775
748
  attribute(String, :coords, :coords)
@@ -832,7 +805,6 @@ module Watir
832
805
  end
833
806
 
834
807
  class Pre < HTMLElement
835
- attribute(Integer, :width, :width)
836
808
  end
837
809
  class PreCollection < ElementCollection
838
810
  end
@@ -840,9 +812,7 @@ module Watir
840
812
  class HR < HTMLElement
841
813
  attribute(String, :align, :align)
842
814
  attribute(String, :color, :color)
843
- attribute("Boolean", :no_shade?, :noShade)
844
- attribute(String, :size, :size)
845
- attribute(String, :width, :width)
815
+ attribute("Boolean", :noshade?, :noShade)
846
816
  end
847
817
  class HRCollection < ElementCollection
848
818
  end
@@ -861,9 +831,9 @@ module Watir
861
831
 
862
832
  class Body < HTMLElement
863
833
  attribute(String, :link, :link)
864
- attribute(String, :v_link, :vLink)
865
- attribute(String, :a_link, :aLink)
866
- attribute(String, :bg_color, :bgColor)
834
+ attribute(String, :vlink, :vLink)
835
+ attribute(String, :alink, :aLink)
836
+ attribute(String, :bgcolor, :bgColor)
867
837
  attribute(String, :background, :background)
868
838
  attribute(String, :onafterprint, :onafterprint)
869
839
  attribute(String, :onbeforeprint, :onbeforeprint)