watir 6.6.3 → 6.7.0

Sign up to get free protection for your applications and to get access to all the features.
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)