watir 6.13.0 → 6.14.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +141 -0
- data/.travis.yml +6 -0
- data/CHANGES.md +12 -0
- data/Gemfile +4 -10
- data/README.md +64 -49
- data/Rakefile +28 -16
- data/lib/watir.rb +13 -15
- data/lib/watir/adjacent.rb +15 -13
- data/lib/watir/after_hooks.rb +8 -10
- data/lib/watir/alert.rb +7 -8
- data/lib/watir/aliases.rb +2 -2
- data/lib/watir/attribute_helper.rb +18 -20
- data/lib/watir/browser.rb +42 -75
- data/lib/watir/capabilities.rb +19 -10
- data/lib/watir/cell_container.rb +0 -2
- data/lib/watir/container.rb +4 -4
- data/lib/watir/cookies.rb +7 -8
- data/lib/watir/element_collection.rb +37 -22
- data/lib/watir/elements/area.rb +0 -2
- data/lib/watir/elements/button.rb +1 -3
- data/lib/watir/elements/cell.rb +0 -1
- data/lib/watir/elements/checkbox.rb +5 -7
- data/lib/watir/elements/date_field.rb +5 -9
- data/lib/watir/elements/date_time_field.rb +6 -10
- data/lib/watir/elements/dlist.rb +2 -4
- data/lib/watir/elements/element.rb +201 -99
- data/lib/watir/elements/file_field.rb +3 -4
- data/lib/watir/elements/font.rb +2 -4
- data/lib/watir/elements/form.rb +0 -2
- data/lib/watir/elements/hidden.rb +3 -4
- data/lib/watir/elements/html_elements.rb +24 -76
- data/lib/watir/elements/iframe.rb +57 -71
- data/lib/watir/elements/image.rb +3 -4
- data/lib/watir/elements/input.rb +0 -2
- data/lib/watir/elements/link.rb +2 -5
- data/lib/watir/elements/list.rb +4 -4
- data/lib/watir/elements/option.rb +3 -6
- data/lib/watir/elements/radio.rb +4 -6
- data/lib/watir/elements/row.rb +0 -1
- data/lib/watir/elements/select.rb +41 -43
- data/lib/watir/elements/svg_elements.rb +0 -116
- data/lib/watir/elements/table.rb +1 -2
- data/lib/watir/elements/table_cell.rb +2 -3
- data/lib/watir/elements/text_field.rb +4 -6
- data/lib/watir/exception.rb +0 -1
- data/lib/watir/extensions/nokogiri.rb +2 -4
- data/lib/watir/generator.rb +3 -3
- data/lib/watir/generator/base.rb +10 -10
- data/lib/watir/generator/base/generator.rb +26 -29
- data/lib/watir/generator/base/idl_sorter.rb +34 -32
- data/lib/watir/generator/base/spec_extractor.rb +132 -114
- data/lib/watir/generator/base/util.rb +1 -3
- data/lib/watir/generator/base/visitor.rb +140 -140
- data/lib/watir/generator/html.rb +4 -4
- data/lib/watir/generator/html/generator.rb +2 -4
- data/lib/watir/generator/html/spec_extractor.rb +33 -33
- data/lib/watir/generator/html/visitor.rb +14 -14
- data/lib/watir/generator/svg.rb +3 -3
- data/lib/watir/generator/svg/generator.rb +1 -3
- data/lib/watir/generator/svg/spec_extractor.rb +35 -35
- data/lib/watir/generator/svg/visitor.rb +14 -14
- data/lib/watir/has_window.rb +2 -4
- data/lib/watir/js_execution.rb +7 -9
- data/lib/watir/js_snippets.rb +3 -3
- data/lib/watir/js_snippets/attributeValues.js +11 -0
- data/lib/watir/legacy_wait.rb +7 -12
- data/lib/watir/locators.rb +9 -11
- data/lib/watir/locators/button/locator.rb +2 -3
- data/lib/watir/locators/button/selector_builder.rb +9 -9
- data/lib/watir/locators/button/selector_builder/xpath.rb +1 -1
- data/lib/watir/locators/button/validator.rb +2 -2
- data/lib/watir/locators/cell/locator.rb +0 -2
- data/lib/watir/locators/cell/selector_builder.rb +3 -5
- data/lib/watir/locators/element/locator.rb +85 -64
- data/lib/watir/locators/element/selector_builder.rb +40 -38
- data/lib/watir/locators/element/selector_builder/xpath.rb +20 -18
- data/lib/watir/locators/element/validator.rb +1 -1
- data/lib/watir/locators/row/locator.rb +0 -2
- data/lib/watir/locators/row/selector_builder.rb +6 -9
- data/lib/watir/locators/text_area/selector_builder.rb +1 -1
- data/lib/watir/locators/text_field/locator.rb +1 -3
- data/lib/watir/locators/text_field/selector_builder.rb +5 -5
- data/lib/watir/locators/text_field/selector_builder/xpath.rb +1 -1
- data/lib/watir/locators/text_field/validator.rb +3 -2
- data/lib/watir/logger.rb +11 -21
- data/lib/watir/navigation.rb +49 -0
- data/lib/watir/radio_set.rb +17 -18
- data/lib/watir/row_container.rb +3 -5
- data/lib/watir/screenshot.rb +2 -4
- data/lib/watir/user_editable.rb +13 -8
- data/lib/watir/version.rb +3 -0
- data/lib/watir/wait.rb +56 -55
- data/lib/watir/wait/timer.rb +1 -3
- data/lib/watir/window.rb +36 -45
- data/lib/watir/xpath_support.rb +1 -3
- data/lib/watirspec.rb +11 -11
- data/lib/watirspec/guards.rb +10 -7
- data/lib/watirspec/implementation.rb +3 -4
- data/lib/watirspec/rake_tasks.rb +30 -29
- data/lib/watirspec/remote_server.rb +3 -3
- data/lib/watirspec/runner.rb +1 -2
- data/lib/watirspec/server.rb +3 -0
- data/lib/watirspec/server/app.rb +14 -6
- data/spec/implementation_spec.rb +9 -9
- data/spec/locator_spec_helper.rb +3 -4
- data/spec/spec_helper.rb +3 -7
- data/spec/unit/container_spec.rb +9 -10
- data/spec/unit/element_locator_spec.rb +224 -219
- data/spec/unit/logger_spec.rb +4 -4
- data/spec/unit/unit_helper.rb +0 -2
- data/spec/unit/wait_spec.rb +26 -28
- data/spec/watirspec/adjacent_spec.rb +130 -130
- data/spec/watirspec/after_hooks_spec.rb +63 -63
- data/spec/watirspec/alert_spec.rb +6 -6
- data/spec/watirspec/attributes_spec.rb +6 -6
- data/spec/watirspec/browser_spec.rb +161 -162
- data/spec/watirspec/click_spec.rb +9 -9
- data/spec/watirspec/cookies_spec.rb +15 -14
- data/spec/watirspec/drag_and_drop_spec.rb +15 -16
- data/spec/watirspec/element_hidden_spec.rb +19 -21
- data/spec/watirspec/elements/area_spec.rb +18 -21
- data/spec/watirspec/elements/areas_spec.rb +13 -15
- data/spec/watirspec/elements/button_spec.rb +96 -99
- data/spec/watirspec/elements/buttons_spec.rb +17 -19
- data/spec/watirspec/elements/checkbox_spec.rb +102 -100
- data/spec/watirspec/elements/checkboxes_spec.rb +13 -15
- data/spec/watirspec/elements/collections_spec.rb +35 -37
- data/spec/watirspec/elements/date_field_spec.rb +46 -47
- data/spec/watirspec/elements/date_fields_spec.rb +13 -15
- data/spec/watirspec/elements/date_time_field_spec.rb +62 -57
- data/spec/watirspec/elements/date_time_fields_spec.rb +14 -15
- data/spec/watirspec/elements/dd_spec.rb +46 -48
- data/spec/watirspec/elements/dds_spec.rb +13 -15
- data/spec/watirspec/elements/del_spec.rb +27 -28
- data/spec/watirspec/elements/dels_spec.rb +13 -15
- data/spec/watirspec/elements/div_spec.rb +89 -91
- data/spec/watirspec/elements/divs_spec.rb +17 -19
- data/spec/watirspec/elements/dl_spec.rb +52 -54
- data/spec/watirspec/elements/dls_spec.rb +13 -15
- data/spec/watirspec/elements/dt_spec.rb +46 -48
- data/spec/watirspec/elements/dts_spec.rb +13 -15
- data/spec/watirspec/elements/element_spec.rb +240 -189
- data/spec/watirspec/elements/elements_spec.rb +16 -16
- data/spec/watirspec/elements/em_spec.rb +38 -40
- data/spec/watirspec/elements/ems_spec.rb +13 -15
- data/spec/watirspec/elements/filefield_spec.rb +45 -46
- data/spec/watirspec/elements/filefields_spec.rb +13 -15
- data/spec/watirspec/elements/font_spec.rb +11 -13
- data/spec/watirspec/elements/form_spec.rb +13 -15
- data/spec/watirspec/elements/forms_spec.rb +13 -15
- data/spec/watirspec/elements/frame_spec.rb +48 -50
- data/spec/watirspec/elements/frames_spec.rb +13 -15
- data/spec/watirspec/elements/hidden_spec.rb +23 -25
- data/spec/watirspec/elements/hiddens_spec.rb +13 -15
- data/spec/watirspec/elements/hn_spec.rb +22 -24
- data/spec/watirspec/elements/hns_spec.rb +13 -13
- data/spec/watirspec/elements/iframe_spec.rb +106 -74
- data/spec/watirspec/elements/iframes_spec.rb +16 -18
- data/spec/watirspec/elements/image_spec.rb +30 -32
- data/spec/watirspec/elements/images_spec.rb +13 -15
- data/spec/watirspec/elements/input_spec.rb +4 -5
- data/spec/watirspec/elements/ins_spec.rb +27 -29
- data/spec/watirspec/elements/inses_spec.rb +13 -15
- data/spec/watirspec/elements/label_spec.rb +17 -19
- data/spec/watirspec/elements/labels_spec.rb +13 -15
- data/spec/watirspec/elements/li_spec.rb +23 -25
- data/spec/watirspec/elements/link_spec.rb +45 -48
- data/spec/watirspec/elements/links_spec.rb +14 -16
- data/spec/watirspec/elements/lis_spec.rb +13 -15
- data/spec/watirspec/elements/list_spec.rb +14 -15
- data/spec/watirspec/elements/map_spec.rb +19 -20
- data/spec/watirspec/elements/maps_spec.rb +13 -15
- data/spec/watirspec/elements/meta_spec.rb +10 -10
- data/spec/watirspec/elements/metas_spec.rb +13 -15
- data/spec/watirspec/elements/ol_spec.rb +20 -21
- data/spec/watirspec/elements/ols_spec.rb +13 -15
- data/spec/watirspec/elements/option_spec.rb +63 -63
- data/spec/watirspec/elements/p_spec.rb +27 -26
- data/spec/watirspec/elements/pre_spec.rb +24 -25
- data/spec/watirspec/elements/pres_spec.rb +13 -15
- data/spec/watirspec/elements/ps_spec.rb +13 -15
- data/spec/watirspec/elements/radio_spec.rb +96 -97
- data/spec/watirspec/elements/radios_spec.rb +13 -15
- data/spec/watirspec/elements/select_list_spec.rb +244 -237
- data/spec/watirspec/elements/select_lists_spec.rb +15 -16
- data/spec/watirspec/elements/span_spec.rb +32 -31
- data/spec/watirspec/elements/spans_spec.rb +13 -15
- data/spec/watirspec/elements/strong_spec.rb +23 -24
- data/spec/watirspec/elements/strongs_spec.rb +13 -15
- data/spec/watirspec/elements/table_nesting_spec.rb +15 -14
- data/spec/watirspec/elements/table_spec.rb +61 -62
- data/spec/watirspec/elements/tables_spec.rb +15 -17
- data/spec/watirspec/elements/tbody_spec.rb +25 -26
- data/spec/watirspec/elements/tbodys_spec.rb +17 -19
- data/spec/watirspec/elements/td_spec.rb +20 -22
- data/spec/watirspec/elements/tds_spec.rb +9 -11
- data/spec/watirspec/elements/text_field_spec.rb +55 -56
- data/spec/watirspec/elements/text_fields_spec.rb +15 -16
- data/spec/watirspec/elements/textarea_spec.rb +2 -2
- data/spec/watirspec/elements/textareas_spec.rb +1 -1
- data/spec/watirspec/elements/tfoot_spec.rb +22 -23
- data/spec/watirspec/elements/tfoots_spec.rb +19 -19
- data/spec/watirspec/elements/thead_spec.rb +21 -23
- data/spec/watirspec/elements/theads_spec.rb +19 -19
- data/spec/watirspec/elements/tr_spec.rb +20 -22
- data/spec/watirspec/elements/trs_spec.rb +17 -19
- data/spec/watirspec/elements/ul_spec.rb +17 -19
- data/spec/watirspec/elements/uls_spec.rb +13 -14
- data/spec/watirspec/html/data_attributes.html +1 -0
- data/spec/watirspec/radio_set_spec.rb +100 -99
- data/spec/watirspec/relaxed_locate_spec.rb +19 -43
- data/spec/watirspec/screenshot_spec.rb +4 -4
- data/spec/watirspec/special_chars_spec.rb +2 -4
- data/spec/watirspec/support/rspec_matchers.rb +85 -22
- data/spec/watirspec/user_editable_spec.rb +84 -85
- data/spec/watirspec/wait_spec.rb +74 -95
- data/spec/watirspec/window_switching_spec.rb +131 -132
- data/spec/watirspec_helper.rb +12 -9
- data/support/travis.sh +4 -0
- data/support/version_differ.rb +12 -13
- data/watir.gemspec +29 -22
- metadata +76 -50
@@ -1,6 +1,5 @@
|
|
1
1
|
module Watir
|
2
2
|
class FileField < Input
|
3
|
-
|
4
3
|
#
|
5
4
|
# Set the file field to the given path
|
6
5
|
#
|
@@ -10,6 +9,7 @@ module Watir
|
|
10
9
|
|
11
10
|
def set(path)
|
12
11
|
raise Errno::ENOENT, path unless File.exist?(path)
|
12
|
+
|
13
13
|
self.value = path
|
14
14
|
end
|
15
15
|
|
@@ -23,16 +23,15 @@ module Watir
|
|
23
23
|
path = path.gsub(File::SEPARATOR, File::ALT_SEPARATOR) if File::ALT_SEPARATOR
|
24
24
|
element_call { @element.send_keys path }
|
25
25
|
end
|
26
|
-
|
27
26
|
end # FileField
|
28
27
|
|
29
28
|
module Container
|
30
29
|
def file_field(*args)
|
31
|
-
FileField.new(self, extract_selector(args).merge(tag_name:
|
30
|
+
FileField.new(self, extract_selector(args).merge(tag_name: 'input', type: 'file'))
|
32
31
|
end
|
33
32
|
|
34
33
|
def file_fields(*args)
|
35
|
-
FileFieldCollection.new(self, extract_selector(args).merge(tag_name:
|
34
|
+
FileFieldCollection.new(self, extract_selector(args).merge(tag_name: 'input', type: 'file'))
|
36
35
|
end
|
37
36
|
end # Container
|
38
37
|
|
data/lib/watir/elements/font.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
module Watir
|
2
2
|
class Font < HTMLElement
|
3
|
-
|
4
3
|
#
|
5
4
|
# size of font
|
6
5
|
#
|
@@ -10,16 +9,15 @@ module Watir
|
|
10
9
|
def size
|
11
10
|
attribute_value(:size)
|
12
11
|
end
|
13
|
-
|
14
12
|
end # Font
|
15
13
|
|
16
14
|
module Container
|
17
15
|
def font(*args)
|
18
|
-
Font.new(self, extract_selector(args).merge(tag_name:
|
16
|
+
Font.new(self, extract_selector(args).merge(tag_name: 'font'))
|
19
17
|
end
|
20
18
|
|
21
19
|
def fonts(*args)
|
22
|
-
FontCollection.new(self, extract_selector(args).merge(tag_name:
|
20
|
+
FontCollection.new(self, extract_selector(args).merge(tag_name: 'font'))
|
23
21
|
end
|
24
22
|
end # Container
|
25
23
|
end # Watir
|
data/lib/watir/elements/form.rb
CHANGED
@@ -5,18 +5,17 @@ module Watir
|
|
5
5
|
end
|
6
6
|
|
7
7
|
def click
|
8
|
-
raise Watir::Exception::ObjectDisabledException,
|
8
|
+
raise Watir::Exception::ObjectDisabledException, 'click is not available on the hidden field element'
|
9
9
|
end
|
10
|
-
|
11
10
|
end
|
12
11
|
|
13
12
|
module Container
|
14
13
|
def hidden(*args)
|
15
|
-
Hidden.new(self, extract_selector(args).merge(tag_name:
|
14
|
+
Hidden.new(self, extract_selector(args).merge(tag_name: 'input', type: 'hidden'))
|
16
15
|
end
|
17
16
|
|
18
17
|
def hiddens(*args)
|
19
|
-
HiddenCollection.new(self, extract_selector(args).merge(tag_name:
|
18
|
+
HiddenCollection.new(self, extract_selector(args).merge(tag_name: 'input', type: 'hidden'))
|
20
19
|
end
|
21
20
|
end # Container
|
22
21
|
|
@@ -10,9 +10,8 @@ module Watir
|
|
10
10
|
attribute(Integer, :tabindex, :tabIndex)
|
11
11
|
attribute(String, :accesskey, :accessKey)
|
12
12
|
attribute("Boolean", :draggable?, :draggable)
|
13
|
-
attribute(String, :dropzone, :dropzone)
|
14
|
-
attribute(String, :contextmenu, :contextMenu)
|
15
13
|
attribute("Boolean", :spellcheck?, :spellcheck)
|
14
|
+
attribute(String, :innertext, :innerText)
|
16
15
|
attribute(String, :onabort, :onabort)
|
17
16
|
attribute(String, :onblur, :onblur)
|
18
17
|
attribute(String, :oncancel, :oncancel)
|
@@ -21,7 +20,6 @@ module Watir
|
|
21
20
|
attribute(String, :onchange, :onchange)
|
22
21
|
attribute(String, :onclick, :onclick)
|
23
22
|
attribute(String, :onclose, :onclose)
|
24
|
-
attribute(String, :oncontextmenu, :oncontextmenu)
|
25
23
|
attribute(String, :oncuechange, :oncuechange)
|
26
24
|
attribute(String, :ondblclick, :ondblclick)
|
27
25
|
attribute(String, :ondrag, :ondrag)
|
@@ -172,24 +170,11 @@ module Watir
|
|
172
170
|
class ScriptCollection < ElementCollection
|
173
171
|
end
|
174
172
|
|
175
|
-
class
|
176
|
-
attribute(
|
177
|
-
attribute(String, :
|
178
|
-
attribute(String, :icon, :icon)
|
179
|
-
attribute("Boolean", :disabled?, :disabled)
|
180
|
-
attribute("Boolean", :checked?, :checked)
|
181
|
-
attribute(String, :radiogroup, :radiogroup)
|
182
|
-
attribute("Boolean", :default?, :default)
|
183
|
-
end
|
184
|
-
class MenuItemCollection < ElementCollection
|
185
|
-
end
|
186
|
-
|
187
|
-
class Menu < HTMLElement
|
188
|
-
attribute(String, :type, :type)
|
189
|
-
attribute(String, :label, :label)
|
190
|
-
attribute("Boolean", :compact?, :compact)
|
173
|
+
class Dialog < HTMLElement
|
174
|
+
attribute("Boolean", :open?, :open)
|
175
|
+
attribute(String, :returnvalue, :returnValue)
|
191
176
|
end
|
192
|
-
class
|
177
|
+
class DialogCollection < ElementCollection
|
193
178
|
end
|
194
179
|
|
195
180
|
class Details < HTMLElement
|
@@ -253,22 +238,6 @@ module Watir
|
|
253
238
|
class OutputCollection < ElementCollection
|
254
239
|
end
|
255
240
|
|
256
|
-
class Keygen < HTMLElement
|
257
|
-
attribute("Boolean", :autofocus?, :autofocus)
|
258
|
-
attribute(String, :challenge, :challenge)
|
259
|
-
attribute("Boolean", :disabled?, :disabled)
|
260
|
-
attribute(String, :form, :form)
|
261
|
-
attribute(String, :keytype, :keytype)
|
262
|
-
attribute(String, :name, :name)
|
263
|
-
attribute(String, :type, :type)
|
264
|
-
attribute("Boolean", :willvalidate?, :willValidate)
|
265
|
-
attribute(String, :validity, :validity)
|
266
|
-
attribute(String, :validationmessage, :validationMessage)
|
267
|
-
attribute(String, :labels, :labels)
|
268
|
-
end
|
269
|
-
class KeygenCollection < ElementCollection
|
270
|
-
end
|
271
|
-
|
272
241
|
class TextArea < HTMLElement
|
273
242
|
attribute(String, :autocomplete, :autocomplete)
|
274
243
|
attribute("Boolean", :autofocus?, :autofocus)
|
@@ -276,7 +245,6 @@ module Watir
|
|
276
245
|
attribute(String, :dirname, :dirName)
|
277
246
|
attribute("Boolean", :disabled?, :disabled)
|
278
247
|
attribute(String, :form, :form)
|
279
|
-
attribute(String, :inputmode, :inputMode)
|
280
248
|
attribute(Integer, :maxlength, :maxLength)
|
281
249
|
attribute(Integer, :minlength, :minLength)
|
282
250
|
attribute(String, :name, :name)
|
@@ -319,7 +287,6 @@ module Watir
|
|
319
287
|
end
|
320
288
|
|
321
289
|
class DataList < HTMLElement
|
322
|
-
attribute(String, :options, :options)
|
323
290
|
end
|
324
291
|
class DataListCollection < ElementCollection
|
325
292
|
end
|
@@ -333,7 +300,6 @@ module Watir
|
|
333
300
|
attribute(String, :name, :name)
|
334
301
|
attribute("Boolean", :required?, :required)
|
335
302
|
attribute(String, :type, :type)
|
336
|
-
attribute(String, :options, :options)
|
337
303
|
attribute(Integer, :length, :length)
|
338
304
|
attribute(String, :selectedoptions, :selectedOptions)
|
339
305
|
attribute(Integer, :selectedindex, :selectedIndex)
|
@@ -358,7 +324,6 @@ module Watir
|
|
358
324
|
attribute(String, :name, :name)
|
359
325
|
attribute(String, :type, :type)
|
360
326
|
attribute(String, :value, :value)
|
361
|
-
attribute(String, :menu, :menu)
|
362
327
|
attribute("Boolean", :willvalidate?, :willValidate)
|
363
328
|
attribute(String, :validity, :validity)
|
364
329
|
attribute(String, :validationmessage, :validationMessage)
|
@@ -384,7 +349,6 @@ module Watir
|
|
384
349
|
attribute("Boolean", :formnovalidate?, :formNoValidate)
|
385
350
|
attribute(String, :formtarget, :formTarget)
|
386
351
|
attribute("Boolean", :indeterminate?, :indeterminate)
|
387
|
-
attribute(String, :inputmode, :inputMode)
|
388
352
|
attribute(String, :list, :list)
|
389
353
|
attribute(String, :max, :max)
|
390
354
|
attribute(Integer, :maxlength, :maxLength)
|
@@ -463,7 +427,6 @@ module Watir
|
|
463
427
|
end
|
464
428
|
|
465
429
|
class TableDataCell < TableCell
|
466
|
-
attribute(String, :abbr, :abbr)
|
467
430
|
end
|
468
431
|
class TableDataCellCollection < ElementCollection
|
469
432
|
end
|
@@ -529,6 +492,7 @@ module Watir
|
|
529
492
|
attribute(String, :rellist, :relList)
|
530
493
|
attribute(String, :hreflang, :hreflang)
|
531
494
|
attribute(String, :type, :type)
|
495
|
+
attribute(String, :referrerpolicy, :referrerPolicy)
|
532
496
|
attribute("Boolean", :nohref?, :noHref)
|
533
497
|
attribute(String, :href, :href)
|
534
498
|
attribute(String, :origin, :origin)
|
@@ -638,7 +602,6 @@ module Watir
|
|
638
602
|
attribute(Integer, :vspace, :vspace)
|
639
603
|
attribute(String, :codebase, :codeBase)
|
640
604
|
attribute(String, :codetype, :codeType)
|
641
|
-
attribute(String, :usemap, :useMap)
|
642
605
|
attribute(String, :border, :border)
|
643
606
|
end
|
644
607
|
class ObjectCollection < ElementCollection
|
@@ -659,11 +622,14 @@ module Watir
|
|
659
622
|
attribute(String, :name, :name)
|
660
623
|
attribute(String, :sandbox, :sandbox)
|
661
624
|
attribute("Boolean", :allowfullscreen?, :allowFullscreen)
|
625
|
+
attribute("Boolean", :allowpaymentrequest?, :allowPaymentRequest)
|
626
|
+
attribute(String, :referrerpolicy, :referrerPolicy)
|
662
627
|
attribute(String, :contentdocument, :contentDocument)
|
663
628
|
attribute(String, :contentwindow, :contentWindow)
|
664
629
|
attribute(String, :align, :align)
|
665
630
|
attribute(String, :scrolling, :scrolling)
|
666
631
|
attribute(String, :frameborder, :frameBorder)
|
632
|
+
attribute(String, :longdesc, :longDesc)
|
667
633
|
attribute(String, :marginheight, :marginHeight)
|
668
634
|
attribute(String, :marginwidth, :marginWidth)
|
669
635
|
end
|
@@ -677,11 +643,13 @@ module Watir
|
|
677
643
|
attribute(String, :sizes, :sizes)
|
678
644
|
attribute(String, :crossorigin, :crossOrigin)
|
679
645
|
attribute(String, :usemap, :useMap)
|
646
|
+
attribute(String, :longdesc, :longDesc)
|
680
647
|
attribute("Boolean", :ismap?, :isMap)
|
681
648
|
attribute(Integer, :naturalwidth, :naturalWidth)
|
682
649
|
attribute(Integer, :naturalheight, :naturalHeight)
|
683
650
|
attribute("Boolean", :complete?, :complete)
|
684
651
|
attribute(String, :currentsrc, :currentSrc)
|
652
|
+
attribute(String, :referrerpolicy, :referrerPolicy)
|
685
653
|
attribute(String, :name, :name)
|
686
654
|
attribute(String, :lowsrc, :lowsrc)
|
687
655
|
attribute(String, :align, :align)
|
@@ -693,11 +661,11 @@ module Watir
|
|
693
661
|
end
|
694
662
|
|
695
663
|
class Source < HTMLElement
|
664
|
+
attribute(String, :src, :src)
|
665
|
+
attribute(String, :type, :type)
|
696
666
|
attribute(String, :srcset, :srcset)
|
697
667
|
attribute(String, :sizes, :sizes)
|
698
668
|
attribute(String, :media, :media)
|
699
|
-
attribute(String, :src, :src)
|
700
|
-
attribute(String, :type, :type)
|
701
669
|
end
|
702
670
|
class SourceCollection < ElementCollection
|
703
671
|
end
|
@@ -745,6 +713,7 @@ module Watir
|
|
745
713
|
attribute(String, :rellist, :relList)
|
746
714
|
attribute(String, :hreflang, :hreflang)
|
747
715
|
attribute(String, :type, :type)
|
716
|
+
attribute(String, :referrerpolicy, :referrerPolicy)
|
748
717
|
attribute(String, :coords, :coords)
|
749
718
|
attribute(String, :charset, :charset)
|
750
719
|
attribute(String, :name, :name)
|
@@ -830,7 +799,6 @@ module Watir
|
|
830
799
|
end
|
831
800
|
|
832
801
|
class Body < HTMLElement
|
833
|
-
attribute(String, :link, :link)
|
834
802
|
attribute(String, :vlink, :vLink)
|
835
803
|
attribute(String, :alink, :aLink)
|
836
804
|
attribute(String, :bgcolor, :bgColor)
|
@@ -1172,6 +1140,16 @@ module Watir
|
|
1172
1140
|
end
|
1173
1141
|
Watir.tag_to_class[:dfn] = HTMLElement
|
1174
1142
|
|
1143
|
+
# @return [Dialog]
|
1144
|
+
def dialog(*args)
|
1145
|
+
Dialog.new(self, extract_selector(args).merge(tag_name: "dialog"))
|
1146
|
+
end
|
1147
|
+
# @return [DialogCollection]
|
1148
|
+
def dialogs(*args)
|
1149
|
+
DialogCollection.new(self, extract_selector(args).merge(tag_name: "dialog"))
|
1150
|
+
end
|
1151
|
+
Watir.tag_to_class[:dialog] = Dialog
|
1152
|
+
|
1175
1153
|
# @return [Div]
|
1176
1154
|
def div(*args)
|
1177
1155
|
Div.new(self, extract_selector(args).merge(tag_name: "div"))
|
@@ -1442,16 +1420,6 @@ module Watir
|
|
1442
1420
|
end
|
1443
1421
|
Watir.tag_to_class[:kbd] = HTMLElement
|
1444
1422
|
|
1445
|
-
# @return [Keygen]
|
1446
|
-
def keygen(*args)
|
1447
|
-
Keygen.new(self, extract_selector(args).merge(tag_name: "keygen"))
|
1448
|
-
end
|
1449
|
-
# @return [KeygenCollection]
|
1450
|
-
def keygens(*args)
|
1451
|
-
KeygenCollection.new(self, extract_selector(args).merge(tag_name: "keygen"))
|
1452
|
-
end
|
1453
|
-
Watir.tag_to_class[:keygen] = Keygen
|
1454
|
-
|
1455
1423
|
# @return [Label]
|
1456
1424
|
def label(*args)
|
1457
1425
|
Label.new(self, extract_selector(args).merge(tag_name: "label"))
|
@@ -1512,26 +1480,6 @@ module Watir
|
|
1512
1480
|
end
|
1513
1481
|
Watir.tag_to_class[:mark] = HTMLElement
|
1514
1482
|
|
1515
|
-
# @return [Menu]
|
1516
|
-
def menu(*args)
|
1517
|
-
Menu.new(self, extract_selector(args).merge(tag_name: "menu"))
|
1518
|
-
end
|
1519
|
-
# @return [MenuCollection]
|
1520
|
-
def menus(*args)
|
1521
|
-
MenuCollection.new(self, extract_selector(args).merge(tag_name: "menu"))
|
1522
|
-
end
|
1523
|
-
Watir.tag_to_class[:menu] = Menu
|
1524
|
-
|
1525
|
-
# @return [MenuItem]
|
1526
|
-
def menuitem(*args)
|
1527
|
-
MenuItem.new(self, extract_selector(args).merge(tag_name: "menuitem"))
|
1528
|
-
end
|
1529
|
-
# @return [MenuItemCollection]
|
1530
|
-
def menuitems(*args)
|
1531
|
-
MenuItemCollection.new(self, extract_selector(args).merge(tag_name: "menuitem"))
|
1532
|
-
end
|
1533
|
-
Watir.tag_to_class[:menuitem] = MenuItem
|
1534
|
-
|
1535
1483
|
# @return [Meta]
|
1536
1484
|
def meta(*args)
|
1537
1485
|
Meta.new(self, extract_selector(args).merge(tag_name: "meta"))
|
@@ -1,40 +1,17 @@
|
|
1
1
|
module Watir
|
2
2
|
class IFrame < HTMLElement
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
@query_scope.ensure_context
|
7
|
-
|
8
|
-
selector = @selector.merge(tag_name: frame_tag)
|
9
|
-
element_validator = element_validator_class.new
|
10
|
-
selector_builder = selector_builder_class.new(@query_scope, selector, self.class.attribute_list)
|
11
|
-
@locator = locator_class.new(@query_scope, selector, selector_builder, element_validator)
|
12
|
-
|
13
|
-
element = @locator.locate
|
14
|
-
element or raise unknown_exception, "unable to locate #{@selector[:tag_name]} using #{selector_string}"
|
15
|
-
|
16
|
-
@element = FramedDriver.new(element, browser)
|
17
|
-
end
|
18
|
-
|
19
|
-
def ==(other)
|
20
|
-
return false unless other.is_a?(self.class)
|
21
|
-
wd == other.wd.is_a?(FramedDriver) ? other.wd.send(:wd) : other.wd
|
22
|
-
end
|
3
|
+
#
|
4
|
+
# Move Driver context into the iframe
|
5
|
+
#
|
23
6
|
|
24
7
|
def switch_to!
|
25
|
-
locate
|
26
|
-
|
27
|
-
|
28
|
-
def assert_exists
|
29
|
-
if @element && @selector.empty?
|
30
|
-
raise UnknownFrameException, "wrapping a Selenium element as a Frame is not currently supported"
|
31
|
-
end
|
32
|
-
|
33
|
-
super
|
8
|
+
locate unless located?
|
9
|
+
wd.switch!
|
34
10
|
end
|
35
11
|
|
36
12
|
#
|
37
13
|
# Returns text of iframe body.
|
14
|
+
# #body ensures context so this method does not have to
|
38
15
|
#
|
39
16
|
# @return [String]
|
40
17
|
#
|
@@ -50,8 +27,15 @@ module Watir
|
|
50
27
|
#
|
51
28
|
|
52
29
|
def html
|
53
|
-
|
54
|
-
|
30
|
+
wd.page_source
|
31
|
+
end
|
32
|
+
|
33
|
+
#
|
34
|
+
# Delegate sending keystrokes to FramedDriver
|
35
|
+
#
|
36
|
+
|
37
|
+
def send_keys(*args)
|
38
|
+
wd.send_keys(*args)
|
55
39
|
end
|
56
40
|
|
57
41
|
#
|
@@ -61,106 +45,108 @@ module Watir
|
|
61
45
|
#
|
62
46
|
|
63
47
|
def execute_script(script, *args)
|
64
|
-
args.map! { |e| e.
|
48
|
+
args.map! { |e| e.is_a?(Watir::Element) ? e.wd : e }
|
65
49
|
returned = driver.execute_script(script, *args)
|
66
50
|
|
67
|
-
browser.
|
51
|
+
browser.wrap_elements_in(self, returned)
|
68
52
|
end
|
69
53
|
|
70
|
-
|
71
|
-
|
54
|
+
#
|
55
|
+
# Provides access to underlying Selenium Objects as delegated by FramedDriver
|
56
|
+
#
|
57
|
+
# @return [Watir::FramedDriver]
|
58
|
+
#
|
59
|
+
|
60
|
+
def wd
|
61
|
+
super
|
62
|
+
FramedDriver.new(@element, browser)
|
72
63
|
end
|
73
64
|
|
74
|
-
|
65
|
+
#
|
66
|
+
# @api private
|
67
|
+
#
|
68
|
+
# Always relocate a FramedDriver to ensure proper context switching
|
69
|
+
#
|
70
|
+
# @return [Boolean]
|
71
|
+
#
|
75
72
|
|
76
|
-
def
|
77
|
-
|
73
|
+
def relocate?
|
74
|
+
true
|
78
75
|
end
|
79
76
|
|
77
|
+
private
|
78
|
+
|
80
79
|
def unknown_exception
|
81
80
|
Watir::Exception::UnknownFrameException
|
82
81
|
end
|
83
|
-
|
84
82
|
end # IFrame
|
85
83
|
|
86
|
-
|
87
84
|
class IFrameCollection < ElementCollection
|
88
85
|
end # IFrameCollection
|
89
86
|
|
90
|
-
|
91
87
|
class Frame < IFrame
|
92
|
-
|
93
|
-
private
|
94
|
-
|
95
|
-
def frame_tag
|
96
|
-
'frame'
|
97
|
-
end
|
98
|
-
|
99
88
|
end # Frame
|
100
89
|
|
101
|
-
|
102
90
|
class FrameCollection < IFrameCollection
|
103
91
|
end # FrameCollection
|
104
92
|
|
105
|
-
|
106
93
|
module Container
|
107
|
-
|
108
94
|
def frame(*args)
|
109
|
-
Frame.new(self, extract_selector(args).merge(tag_name:
|
95
|
+
Frame.new(self, extract_selector(args).merge(tag_name: 'frame'))
|
110
96
|
end
|
111
97
|
|
112
98
|
def frames(*args)
|
113
|
-
FrameCollection.new(self, extract_selector(args).merge(tag_name:
|
99
|
+
FrameCollection.new(self, extract_selector(args).merge(tag_name: 'frame'))
|
114
100
|
end
|
115
|
-
|
116
101
|
end # Container
|
117
102
|
|
118
|
-
|
119
|
-
# @api private
|
120
103
|
#
|
121
|
-
#
|
104
|
+
# @api private
|
122
105
|
#
|
123
106
|
|
124
107
|
class FramedDriver
|
125
108
|
def initialize(element, browser)
|
126
109
|
@element = element
|
127
110
|
@browser = browser
|
128
|
-
@driver = browser.
|
111
|
+
@driver = browser.wd
|
129
112
|
end
|
130
113
|
|
131
114
|
def ==(other)
|
132
115
|
wd == other.wd
|
133
116
|
end
|
134
|
-
|
117
|
+
alias eql? ==
|
135
118
|
|
136
119
|
def send_keys(*args)
|
137
120
|
switch!
|
138
121
|
@driver.switch_to.active_element.send_keys(*args)
|
139
122
|
end
|
140
123
|
|
141
|
-
|
124
|
+
def switch!
|
125
|
+
@driver.switch_to.frame @element
|
126
|
+
@browser.default_context = false
|
127
|
+
rescue Selenium::WebDriver::Error::NoSuchFrameError => e
|
128
|
+
raise Exception::UnknownFrameException, e.message
|
129
|
+
end
|
142
130
|
|
143
131
|
def wd
|
144
132
|
@element
|
145
133
|
end
|
146
134
|
|
147
|
-
|
135
|
+
def respond_to_missing?(meth)
|
136
|
+
@driver.respond_to?(meth) || @element.respond_to?(meth)
|
137
|
+
end
|
148
138
|
|
149
139
|
def method_missing(meth, *args, &blk)
|
150
|
-
if
|
140
|
+
if %i[find_element find_elements].include?(meth)
|
141
|
+
@driver.send(meth, *args, &blk)
|
142
|
+
elsif @driver.respond_to?(meth)
|
151
143
|
switch!
|
152
144
|
@driver.send(meth, *args, &blk)
|
153
|
-
|
145
|
+
elsif @element.respond_to?(meth)
|
154
146
|
@element.send(meth, *args, &blk)
|
147
|
+
else
|
148
|
+
super
|
155
149
|
end
|
156
150
|
end
|
157
|
-
|
158
|
-
def switch!
|
159
|
-
@driver.switch_to.frame @element
|
160
|
-
@browser.default_context = false
|
161
|
-
rescue Selenium::WebDriver::Error::NoSuchFrameError => e
|
162
|
-
raise Exception::UnknownFrameException, e.message
|
163
|
-
end
|
164
|
-
|
165
151
|
end # FramedDriver
|
166
152
|
end # Watir
|