watir 7.2.0 → 7.2.1
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.
- checksums.yaml +4 -4
- data/.github/workflows/chrome.yml +1 -1
- data/.github/workflows/edge.yml +1 -1
- data/.github/workflows/firefox.yml +1 -1
- data/.github/workflows/ie.yml +1 -1
- data/.github/workflows/safari.yml +1 -1
- data/.github/workflows/unit.yml +1 -1
- data/.rubocop.yml +25 -12
- data/.rubocop_todo.yml +8 -1
- data/CHANGES.md +6 -1
- data/LICENSE +2 -2
- data/lib/watir/capabilities.rb +1 -1
- data/lib/watir/locators/anchor/selector_builder.rb +3 -0
- data/lib/watir/locators/element/matcher.rb +2 -1
- data/lib/watir/locators/element/selector_builder/regexp_disassembler.rb +2 -1
- data/lib/watir/locators/text_field/matcher.rb +0 -4
- data/lib/watir/version.rb +1 -1
- data/spec/locator_spec_helper.rb +0 -8
- data/spec/unit/capabilities_spec.rb +553 -561
- data/spec/unit/element_locator_spec.rb +89 -78
- data/spec/unit/match_elements/button_spec.rb +69 -62
- data/spec/unit/match_elements/element_spec.rb +303 -309
- data/spec/unit/match_elements/text_field_spec.rb +76 -73
- data/spec/unit/selector_builder/anchor_spec.rb +39 -33
- data/spec/unit/selector_builder/button_spec.rb +209 -202
- data/spec/unit/selector_builder/cell_spec.rb +48 -42
- data/spec/unit/selector_builder/element_spec.rb +634 -627
- data/spec/unit/selector_builder/row_spec.rb +119 -113
- data/spec/unit/selector_builder/text_field_spec.rb +195 -188
- data/spec/unit/selector_builder/textarea_spec.rb +22 -14
- data/spec/unit/wait_spec.rb +85 -81
- data/spec/watirspec/adjacent_spec.rb +249 -247
- data/spec/watirspec/after_hooks_spec.rb +161 -159
- data/spec/watirspec/alert_spec.rb +61 -58
- data/spec/watirspec/browser_spec.rb +409 -409
- data/spec/watirspec/capabilities_spec.rb +89 -99
- data/spec/watirspec/cookies_spec.rb +120 -118
- data/spec/watirspec/drag_and_drop_spec.rb +26 -24
- data/spec/watirspec/element_hidden_spec.rb +66 -60
- data/spec/watirspec/elements/area_spec.rb +49 -47
- data/spec/watirspec/elements/areas_spec.rb +27 -25
- data/spec/watirspec/elements/button_spec.rb +253 -251
- data/spec/watirspec/elements/buttons_spec.rb +36 -34
- data/spec/watirspec/elements/checkbox_spec.rb +48 -36
- data/spec/watirspec/elements/checkboxes_spec.rb +29 -27
- data/spec/watirspec/elements/collections_spec.rb +126 -119
- data/spec/watirspec/elements/date_field_spec.rb +185 -183
- data/spec/watirspec/elements/date_fields_spec.rb +29 -27
- data/spec/watirspec/elements/date_time_field_spec.rb +197 -195
- data/spec/watirspec/elements/date_time_fields_spec.rb +30 -28
- data/spec/watirspec/elements/dd_spec.rb +87 -85
- data/spec/watirspec/elements/dds_spec.rb +27 -25
- data/spec/watirspec/elements/del_spec.rb +106 -104
- data/spec/watirspec/elements/dels_spec.rb +26 -24
- data/spec/watirspec/elements/div_spec.rb +225 -221
- data/spec/watirspec/elements/divs_spec.rb +37 -35
- data/spec/watirspec/elements/dl_spec.rb +110 -108
- data/spec/watirspec/elements/dls_spec.rb +28 -26
- data/spec/watirspec/elements/dt_spec.rb +86 -84
- data/spec/watirspec/elements/dts_spec.rb +27 -25
- data/spec/watirspec/elements/element_spec.rb +794 -775
- data/spec/watirspec/elements/elements_spec.rb +40 -38
- data/spec/watirspec/elements/em_spec.rb +62 -60
- data/spec/watirspec/elements/ems_spec.rb +28 -26
- data/spec/watirspec/elements/filefield_spec.rb +116 -114
- data/spec/watirspec/elements/filefields_spec.rb +28 -26
- data/spec/watirspec/elements/font_spec.rb +20 -18
- data/spec/watirspec/elements/form_spec.rb +51 -49
- data/spec/watirspec/elements/forms_spec.rb +29 -27
- data/spec/watirspec/elements/frame_spec.rb +89 -87
- data/spec/watirspec/elements/frames_spec.rb +27 -25
- data/spec/watirspec/elements/hidden_spec.rb +81 -79
- data/spec/watirspec/elements/hiddens_spec.rb +28 -26
- data/spec/watirspec/elements/hn_spec.rb +59 -57
- data/spec/watirspec/elements/hns_spec.rb +26 -24
- data/spec/watirspec/elements/iframe_spec.rb +195 -191
- data/spec/watirspec/elements/iframes_spec.rb +31 -29
- data/spec/watirspec/elements/image_spec.rb +148 -146
- data/spec/watirspec/elements/images_spec.rb +26 -24
- data/spec/watirspec/elements/input_spec.rb +9 -7
- data/spec/watirspec/elements/ins_spec.rb +106 -104
- data/spec/watirspec/elements/inses_spec.rb +26 -24
- data/spec/watirspec/elements/label_spec.rb +56 -54
- data/spec/watirspec/elements/labels_spec.rb +26 -24
- data/spec/watirspec/elements/li_spec.rb +76 -74
- data/spec/watirspec/elements/link_spec.rb +173 -177
- data/spec/watirspec/elements/links_spec.rb +45 -43
- data/spec/watirspec/elements/lis_spec.rb +27 -25
- data/spec/watirspec/elements/list_spec.rb +44 -42
- data/spec/watirspec/elements/map_spec.rb +57 -55
- data/spec/watirspec/elements/maps_spec.rb +27 -25
- data/spec/watirspec/elements/meta_spec.rb +16 -14
- data/spec/watirspec/elements/metas_spec.rb +26 -24
- data/spec/watirspec/elements/ol_spec.rb +56 -65
- data/spec/watirspec/elements/ols_spec.rb +26 -24
- data/spec/watirspec/elements/option_spec.rb +91 -89
- data/spec/watirspec/elements/p_spec.rb +81 -79
- data/spec/watirspec/elements/pre_spec.rb +77 -75
- data/spec/watirspec/elements/pres_spec.rb +26 -24
- data/spec/watirspec/elements/ps_spec.rb +26 -24
- data/spec/watirspec/elements/radio_spec.rb +251 -249
- data/spec/watirspec/elements/radios_spec.rb +28 -26
- data/spec/watirspec/elements/select_list_spec.rb +537 -526
- data/spec/watirspec/elements/select_lists_spec.rb +32 -30
- data/spec/watirspec/elements/span_spec.rb +112 -110
- data/spec/watirspec/elements/spans_spec.rb +26 -24
- data/spec/watirspec/elements/strong_spec.rb +58 -58
- data/spec/watirspec/elements/strongs_spec.rb +28 -26
- data/spec/watirspec/elements/table_spec.rb +192 -139
- data/spec/watirspec/elements/tables_spec.rb +28 -26
- data/spec/watirspec/elements/tbody_spec.rb +74 -72
- data/spec/watirspec/elements/tbodys_spec.rb +40 -38
- data/spec/watirspec/elements/td_spec.rb +66 -64
- data/spec/watirspec/elements/tds_spec.rb +41 -39
- data/spec/watirspec/elements/text_field_spec.rb +206 -204
- data/spec/watirspec/elements/text_fields_spec.rb +30 -28
- data/spec/watirspec/elements/textarea_spec.rb +20 -18
- data/spec/watirspec/elements/textareas_spec.rb +18 -16
- data/spec/watirspec/elements/tfoot_spec.rb +65 -63
- data/spec/watirspec/elements/tfoots_spec.rb +42 -40
- data/spec/watirspec/elements/thead_spec.rb +65 -63
- data/spec/watirspec/elements/theads_spec.rb +42 -40
- data/spec/watirspec/elements/tr_spec.rb +48 -46
- data/spec/watirspec/elements/trs_spec.rb +42 -40
- data/spec/watirspec/elements/ul_spec.rb +56 -54
- data/spec/watirspec/elements/uls_spec.rb +26 -24
- data/spec/watirspec/radio_set_spec.rb +269 -267
- data/spec/watirspec/screenshot_spec.rb +20 -18
- data/spec/watirspec/scroll_spec.rb +152 -148
- data/spec/watirspec/shadow_root_spec.rb +86 -83
- data/spec/watirspec/user_editable_spec.rb +200 -198
- data/spec/watirspec/wait_spec.rb +289 -295
- data/spec/watirspec/window_switching_spec.rb +422 -434
- data/spec/watirspec_helper.rb +1 -23
- data/watir.gemspec +5 -4
- metadata +44 -33
- data/spec/watirspec/attributes_spec.rb +0 -18
- data/spec/watirspec/elements/table_nesting_spec.rb +0 -51
- data/spec/watirspec/special_chars_spec.rb +0 -23
|
@@ -2,110 +2,112 @@
|
|
|
2
2
|
|
|
3
3
|
require 'watirspec_helper'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
describe '#exists?' do
|
|
11
|
-
it 'returns true if the element exists (page context)' do
|
|
12
|
-
expect(browser.option(id: 'nor')).to exist
|
|
13
|
-
expect(browser.option(id: /nor/)).to exist
|
|
14
|
-
expect(browser.option(value: '2')).to exist
|
|
15
|
-
expect(browser.option(value: /2/)).to exist
|
|
16
|
-
expect(browser.option(text: 'Norway')).to exist
|
|
17
|
-
expect(browser.option(text: /Norway/)).to exist
|
|
18
|
-
expect(browser.option(class: 'scandinavia')).to exist
|
|
19
|
-
expect(browser.option(index: 1)).to exist
|
|
20
|
-
expect(browser.option(xpath: "//option[@id='nor']")).to exist
|
|
5
|
+
module Watir
|
|
6
|
+
describe Option do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
|
|
21
9
|
end
|
|
22
10
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
11
|
+
describe '#exists?' do
|
|
12
|
+
it 'returns true if the element exists (page context)' do
|
|
13
|
+
expect(browser.option(id: 'nor')).to exist
|
|
14
|
+
expect(browser.option(id: /nor/)).to exist
|
|
15
|
+
expect(browser.option(value: '2')).to exist
|
|
16
|
+
expect(browser.option(value: /2/)).to exist
|
|
17
|
+
expect(browser.option(text: 'Norway')).to exist
|
|
18
|
+
expect(browser.option(text: /Norway/)).to exist
|
|
19
|
+
expect(browser.option(class: 'scandinavia')).to exist
|
|
20
|
+
expect(browser.option(index: 1)).to exist
|
|
21
|
+
expect(browser.option(xpath: "//option[@id='nor']")).to exist
|
|
22
|
+
end
|
|
26
23
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
expect(browser.select_list(name: 'new_user_country').option(value: '2')).to exist
|
|
31
|
-
expect(browser.select_list(name: 'new_user_country').option(value: /2/)).to exist
|
|
32
|
-
expect(browser.select_list(name: 'new_user_country').option(text: 'Norway')).to exist
|
|
33
|
-
expect(browser.select_list(name: 'new_user_country').option(text: /Norway/)).to exist
|
|
34
|
-
expect(browser.select_list(name: 'new_user_country').option(class: 'scandinavia')).to exist
|
|
35
|
-
expect(browser.select_list(name: 'new_user_country').option(index: 1)).to exist
|
|
36
|
-
expect(browser.select_list(name: 'new_user_country').option(xpath: "//option[@id='nor']")).to exist
|
|
37
|
-
expect(browser.select_list(name: 'new_user_country').option(label: 'Germany')).to exist
|
|
38
|
-
end
|
|
24
|
+
it 'returns the first option if given no args' do
|
|
25
|
+
expect(browser.option).to exist
|
|
26
|
+
end
|
|
39
27
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
28
|
+
it 'returns true if the element exists (select_list context)' do
|
|
29
|
+
expect(browser.select_list(name: 'new_user_country').option(id: 'nor')).to exist
|
|
30
|
+
expect(browser.select_list(name: 'new_user_country').option(id: /nor/)).to exist
|
|
31
|
+
expect(browser.select_list(name: 'new_user_country').option(value: '2')).to exist
|
|
32
|
+
expect(browser.select_list(name: 'new_user_country').option(value: /2/)).to exist
|
|
33
|
+
expect(browser.select_list(name: 'new_user_country').option(text: 'Norway')).to exist
|
|
34
|
+
expect(browser.select_list(name: 'new_user_country').option(text: /Norway/)).to exist
|
|
35
|
+
expect(browser.select_list(name: 'new_user_country').option(class: 'scandinavia')).to exist
|
|
36
|
+
expect(browser.select_list(name: 'new_user_country').option(index: 1)).to exist
|
|
37
|
+
expect(browser.select_list(name: 'new_user_country').option(xpath: "//option[@id='nor']")).to exist
|
|
38
|
+
expect(browser.select_list(name: 'new_user_country').option(label: 'Germany')).to exist
|
|
39
|
+
end
|
|
51
40
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
41
|
+
it 'returns false if the element does not exist (page context)' do
|
|
42
|
+
expect(browser.option(id: 'no_such_id')).not_to exist
|
|
43
|
+
expect(browser.option(id: /no_such_id/)).not_to exist
|
|
44
|
+
expect(browser.option(value: 'no_such_value')).not_to exist
|
|
45
|
+
expect(browser.option(value: /no_such_value/)).not_to exist
|
|
46
|
+
expect(browser.option(text: 'no_such_text')).not_to exist
|
|
47
|
+
expect(browser.option(text: /no_such_text/)).not_to exist
|
|
48
|
+
expect(browser.option(class: 'no_such_class')).not_to exist
|
|
49
|
+
expect(browser.option(index: 1337)).not_to exist
|
|
50
|
+
expect(browser.option(xpath: "//option[@id='no_such_id']")).not_to exist
|
|
51
|
+
end
|
|
63
52
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
53
|
+
it 'returns false if the element does not exist (select_list context)' do
|
|
54
|
+
expect(browser.select_list(name: 'new_user_country').option(id: 'no_such_id')).not_to exist
|
|
55
|
+
expect(browser.select_list(name: 'new_user_country').option(id: /no_such_id/)).not_to exist
|
|
56
|
+
expect(browser.select_list(name: 'new_user_country').option(value: 'no_such_value')).not_to exist
|
|
57
|
+
expect(browser.select_list(name: 'new_user_country').option(value: /no_such_value/)).not_to exist
|
|
58
|
+
expect(browser.select_list(name: 'new_user_country').option(text: 'no_such_text')).not_to exist
|
|
59
|
+
expect(browser.select_list(name: 'new_user_country').option(text: /no_such_text/)).not_to exist
|
|
60
|
+
expect(browser.select_list(name: 'new_user_country').option(class: 'no_such_class')).not_to exist
|
|
61
|
+
expect(browser.select_list(name: 'new_user_country').option(index: 1337)).not_to exist
|
|
62
|
+
expect(browser.select_list(name: 'new_user_country').option(xpath: "//option[@id='no_such_id']")).not_to exist
|
|
63
|
+
end
|
|
69
64
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
65
|
+
it "raises TypeError when 'what' argument is invalid" do
|
|
66
|
+
expect { browser.option(id: 3.14).exists? }.to raise_error(TypeError)
|
|
67
|
+
expect { browser.select_list(name: 'new_user_country').option(id: 3.14).exists? }.to raise_error(TypeError)
|
|
68
|
+
end
|
|
74
69
|
end
|
|
75
70
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
71
|
+
describe '#select' do
|
|
72
|
+
it 'selects the chosen option (page context)' do
|
|
73
|
+
browser.option(text: 'Denmark').select
|
|
74
|
+
expect(browser.select_list(name: 'new_user_country').selected_options.map(&:text)).to eq ['Denmark']
|
|
75
|
+
end
|
|
80
76
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
77
|
+
it 'selects the chosen option (select_list context)' do
|
|
78
|
+
browser.select_list(name: 'new_user_country').option(text: 'Denmark').select
|
|
79
|
+
expect(browser.select_list(name: 'new_user_country').selected_options.map(&:text)).to eq ['Denmark']
|
|
80
|
+
end
|
|
85
81
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
82
|
+
it 'selects the option when found by text (page context)' do
|
|
83
|
+
browser.option(text: 'Sweden').select
|
|
84
|
+
expect(browser.option(text: 'Sweden')).to be_selected
|
|
85
|
+
end
|
|
90
86
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
87
|
+
it 'selects the option when found by text (select_list context)' do
|
|
88
|
+
browser.select_list(name: 'new_user_country').option(text: 'Sweden').select
|
|
89
|
+
expect(browser.select_list(name: 'new_user_country').option(text: 'Sweden')).to be_selected
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it 'raises UnknownObjectException if the option does not exist (page context)' do
|
|
93
|
+
expect { browser.option(text: 'no_such_text').select }.to raise_unknown_object_exception
|
|
94
|
+
expect { browser.option(text: /missing/).select }.to raise_unknown_object_exception
|
|
95
|
+
end
|
|
95
96
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
97
|
+
it 'raises UnknownObjectException if the option does not exist (select_list context)' do
|
|
98
|
+
expect { browser.select_list(name: 'new_user_country').option(text: 'no_such_text').select }
|
|
99
|
+
.to raise_unknown_object_exception
|
|
100
|
+
expect { browser.select_list(name: 'new_user_country').option(text: /missing/).select }
|
|
101
|
+
.to raise_unknown_object_exception
|
|
102
|
+
end
|
|
101
103
|
end
|
|
102
|
-
end
|
|
103
104
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
105
|
+
describe '#respond_to?' do
|
|
106
|
+
it 'returns true for all attribute methods' do
|
|
107
|
+
expect(browser.select_list(name: 'new_user_country').option(text: 'Sweden')).to respond_to(:class_name)
|
|
108
|
+
expect(browser.select_list(name: 'new_user_country').option(text: 'Sweden')).to respond_to(:id)
|
|
109
|
+
expect(browser.select_list(name: 'new_user_country').option(text: 'Sweden')).to respond_to(:text)
|
|
110
|
+
end
|
|
109
111
|
end
|
|
110
112
|
end
|
|
111
113
|
end
|
|
@@ -2,99 +2,101 @@
|
|
|
2
2
|
|
|
3
3
|
require 'watirspec_helper'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
# Exists method
|
|
11
|
-
describe '#exist?' do
|
|
12
|
-
it "returns true if the 'p' exists" do
|
|
13
|
-
expect(browser.p(id: 'lead')).to exist
|
|
14
|
-
expect(browser.p(id: /lead/)).to exist
|
|
15
|
-
expect(browser.p(text: 'Dubito, ergo cogito, ergo sum.')).to exist
|
|
16
|
-
expect(browser.p(text: /Dubito, ergo cogito, ergo sum/)).to exist
|
|
17
|
-
expect(browser.p(class: 'lead')).to exist
|
|
18
|
-
expect(browser.p(class: /lead/)).to exist
|
|
19
|
-
expect(browser.p(index: 0)).to exist
|
|
20
|
-
expect(browser.p(xpath: "//p[@id='lead']")).to exist
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
it 'returns the first p if given no args' do
|
|
24
|
-
expect(browser.p).to exist
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
it "returns false if the 'p' doesn't exist" do
|
|
28
|
-
expect(browser.p(id: 'no_such_id')).to_not exist
|
|
29
|
-
expect(browser.p(id: /no_such_id/)).to_not exist
|
|
30
|
-
expect(browser.p(text: 'no_such_text')).to_not exist
|
|
31
|
-
expect(browser.p(text: /no_such_text/)).to_not exist
|
|
32
|
-
expect(browser.p(class: 'no_such_class')).to_not exist
|
|
33
|
-
expect(browser.p(class: /no_such_class/)).to_not exist
|
|
34
|
-
expect(browser.p(index: 1337)).to_not exist
|
|
35
|
-
expect(browser.p(xpath: "//p[@id='no_such_id']")).to_not exist
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
it "raises TypeError when 'what' argument is invalid" do
|
|
39
|
-
expect { browser.p(id: 3.14).exists? }.to raise_error(TypeError)
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
# Attribute methods
|
|
44
|
-
describe '#id' do
|
|
45
|
-
it 'returns the id attribute' do
|
|
46
|
-
expect(browser.p(index: 0).id).to eq 'lead'
|
|
5
|
+
module Watir
|
|
6
|
+
describe Paragraph do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('non_control_elements.html'))
|
|
47
9
|
end
|
|
48
10
|
|
|
49
|
-
|
|
50
|
-
|
|
11
|
+
# Exists method
|
|
12
|
+
describe '#exist?' do
|
|
13
|
+
it "returns true if the 'p' exists" do
|
|
14
|
+
expect(browser.p(id: 'lead')).to exist
|
|
15
|
+
expect(browser.p(id: /lead/)).to exist
|
|
16
|
+
expect(browser.p(text: 'Dubito, ergo cogito, ergo sum.')).to exist
|
|
17
|
+
expect(browser.p(text: /Dubito, ergo cogito, ergo sum/)).to exist
|
|
18
|
+
expect(browser.p(class: 'lead')).to exist
|
|
19
|
+
expect(browser.p(class: /lead/)).to exist
|
|
20
|
+
expect(browser.p(index: 0)).to exist
|
|
21
|
+
expect(browser.p(xpath: "//p[@id='lead']")).to exist
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it 'returns the first p if given no args' do
|
|
25
|
+
expect(browser.p).to exist
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "returns false if the 'p' doesn't exist" do
|
|
29
|
+
expect(browser.p(id: 'no_such_id')).not_to exist
|
|
30
|
+
expect(browser.p(id: /no_such_id/)).not_to exist
|
|
31
|
+
expect(browser.p(text: 'no_such_text')).not_to exist
|
|
32
|
+
expect(browser.p(text: /no_such_text/)).not_to exist
|
|
33
|
+
expect(browser.p(class: 'no_such_class')).not_to exist
|
|
34
|
+
expect(browser.p(class: /no_such_class/)).not_to exist
|
|
35
|
+
expect(browser.p(index: 1337)).not_to exist
|
|
36
|
+
expect(browser.p(xpath: "//p[@id='no_such_id']")).not_to exist
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "raises TypeError when 'what' argument is invalid" do
|
|
40
|
+
expect { browser.p(id: 3.14).exists? }.to raise_error(TypeError)
|
|
41
|
+
end
|
|
51
42
|
end
|
|
52
43
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
44
|
+
# Attribute methods
|
|
45
|
+
describe '#id' do
|
|
46
|
+
it 'returns the id attribute' do
|
|
47
|
+
expect(browser.p(index: 0).id).to eq 'lead'
|
|
48
|
+
end
|
|
58
49
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
end
|
|
50
|
+
it "returns an empty string if the element exists and the attribute doesn't" do
|
|
51
|
+
expect(browser.p(index: 2).id).to eq ''
|
|
52
|
+
end
|
|
63
53
|
|
|
64
|
-
|
|
65
|
-
|
|
54
|
+
it "raises UnknownObjectException if the p doesn't exist" do
|
|
55
|
+
expect { browser.p(id: 'no_such_id').id }.to raise_unknown_object_exception
|
|
56
|
+
expect { browser.p(index: 1337).id }.to raise_unknown_object_exception
|
|
57
|
+
end
|
|
66
58
|
end
|
|
67
59
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
end
|
|
60
|
+
describe '#title' do
|
|
61
|
+
it 'returns the title attribute' do
|
|
62
|
+
expect(browser.p(index: 0).title).to eq 'Lorem ipsum'
|
|
63
|
+
end
|
|
73
64
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
'Vestibulum placerat ligula at quam. Pellentesque habitant morbi tristique senectus et netus et ' \
|
|
78
|
-
'malesuada fames ac turpis egestas.'
|
|
79
|
-
expect(browser.p(index: 1).text).to eq msg
|
|
80
|
-
end
|
|
65
|
+
it "returns an empty string if the element exists and the attribute doesn't" do
|
|
66
|
+
expect(browser.p(index: 2).title).to eq ''
|
|
67
|
+
end
|
|
81
68
|
|
|
82
|
-
|
|
83
|
-
|
|
69
|
+
it "raises UnknownObjectException if the p doesn't exist" do
|
|
70
|
+
expect { browser.p(id: 'no_such_id').title }.to raise_unknown_object_exception
|
|
71
|
+
expect { browser.p(xpath: "//p[@id='no_such_id']").title }.to raise_unknown_object_exception
|
|
72
|
+
end
|
|
84
73
|
end
|
|
85
74
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
75
|
+
describe '#text' do
|
|
76
|
+
it 'returns the text of the p' do
|
|
77
|
+
msg = 'Sed pretium metus et quam. Nullam odio dolor, vestibulum non, tempor ut, vehicula sed, sapien. ' \
|
|
78
|
+
'Vestibulum placerat ligula at quam. Pellentesque habitant morbi tristique senectus et netus et ' \
|
|
79
|
+
'malesuada fames ac turpis egestas.'
|
|
80
|
+
expect(browser.p(index: 1).text).to eq msg
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
it "returns an empty string if the element doesn't contain any text" do
|
|
84
|
+
expect(browser.p(index: 4).text).to eq ''
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
it "raises UnknownObjectException if the p doesn't exist" do
|
|
88
|
+
expect { browser.p(id: 'no_such_id').text }.to raise_unknown_object_exception
|
|
89
|
+
expect { browser.p(xpath: "//p[@id='no_such_id']").text }.to raise_unknown_object_exception
|
|
90
|
+
end
|
|
89
91
|
end
|
|
90
|
-
end
|
|
91
92
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
93
|
+
describe '#respond_to?' do
|
|
94
|
+
it 'returns true for all attribute methods' do
|
|
95
|
+
expect(browser.p(index: 0)).to respond_to(:class_name)
|
|
96
|
+
expect(browser.p(index: 0)).to respond_to(:id)
|
|
97
|
+
expect(browser.p(index: 0)).to respond_to(:title)
|
|
98
|
+
expect(browser.p(index: 0)).to respond_to(:text)
|
|
99
|
+
end
|
|
98
100
|
end
|
|
99
101
|
end
|
|
100
102
|
end
|
|
@@ -2,97 +2,99 @@
|
|
|
2
2
|
|
|
3
3
|
require 'watirspec_helper'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
# Exists method
|
|
11
|
-
describe '#exist?' do
|
|
12
|
-
it "returns true if the 'p' exists" do
|
|
13
|
-
expect(browser.pre(id: 'rspec')).to exist
|
|
14
|
-
expect(browser.pre(id: /rspec/)).to exist
|
|
15
|
-
expect(browser.pre(text: 'browser.pre(id: "rspec").should exist')).to exist
|
|
16
|
-
expect(browser.pre(text: /browser\.pre/)).to exist
|
|
17
|
-
expect(browser.pre(class: 'ruby')).to exist
|
|
18
|
-
expect(browser.pre(class: /ruby/)).to exist
|
|
19
|
-
expect(browser.pre(index: 0)).to exist
|
|
20
|
-
expect(browser.pre(xpath: "//pre[@id='rspec']")).to exist
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
it 'returns the first pre if given no args' do
|
|
24
|
-
expect(browser.pre).to exist
|
|
5
|
+
module Watir
|
|
6
|
+
describe Pre do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('non_control_elements.html'))
|
|
25
9
|
end
|
|
26
10
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
11
|
+
# Exists method
|
|
12
|
+
describe '#exist?' do
|
|
13
|
+
it "returns true if the 'p' exists" do
|
|
14
|
+
expect(browser.pre(id: 'rspec')).to exist
|
|
15
|
+
expect(browser.pre(id: /rspec/)).to exist
|
|
16
|
+
expect(browser.pre(text: 'browser.pre(id: "rspec").should exist')).to exist
|
|
17
|
+
expect(browser.pre(text: /browser\.pre/)).to exist
|
|
18
|
+
expect(browser.pre(class: 'ruby')).to exist
|
|
19
|
+
expect(browser.pre(class: /ruby/)).to exist
|
|
20
|
+
expect(browser.pre(index: 0)).to exist
|
|
21
|
+
expect(browser.pre(xpath: "//pre[@id='rspec']")).to exist
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it 'returns the first pre if given no args' do
|
|
25
|
+
expect(browser.pre).to exist
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "returns false if the 'p' doesn't exist" do
|
|
29
|
+
expect(browser.pre(id: 'no_such_id')).not_to exist
|
|
30
|
+
expect(browser.pre(id: /no_such_id/)).not_to exist
|
|
31
|
+
expect(browser.pre(text: 'no_such_text')).not_to exist
|
|
32
|
+
expect(browser.pre(text: /no_such_text/)).not_to exist
|
|
33
|
+
expect(browser.pre(class: 'no_such_class')).not_to exist
|
|
34
|
+
expect(browser.pre(class: /no_such_class/)).not_to exist
|
|
35
|
+
expect(browser.pre(index: 1337)).not_to exist
|
|
36
|
+
expect(browser.pre(xpath: "//pre[@id='no_such_id']")).not_to exist
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "raises TypeError when 'what' argument is invalid" do
|
|
40
|
+
expect { browser.pre(id: 3.14).exists? }.to raise_error(TypeError)
|
|
41
|
+
end
|
|
36
42
|
end
|
|
37
43
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
# Attribute methods
|
|
44
|
-
describe '#id' do
|
|
45
|
-
it 'returns the id attribute' do
|
|
46
|
-
expect(browser.pre(class: 'ruby').id).to eq 'rspec'
|
|
47
|
-
end
|
|
44
|
+
# Attribute methods
|
|
45
|
+
describe '#id' do
|
|
46
|
+
it 'returns the id attribute' do
|
|
47
|
+
expect(browser.pre(class: 'ruby').id).to eq 'rspec'
|
|
48
|
+
end
|
|
48
49
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
it "returns an empty string if the element exists and the attribute doesn't" do
|
|
51
|
+
expect(browser.pre(index: 0).id).to eq ''
|
|
52
|
+
end
|
|
52
53
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
it "raises UnknownObjectException if the pre doesn't exist" do
|
|
55
|
+
expect { browser.pre(id: 'no_such_id').id }.to raise_unknown_object_exception
|
|
56
|
+
expect { browser.pre(index: 1337).id }.to raise_unknown_object_exception
|
|
57
|
+
end
|
|
56
58
|
end
|
|
57
|
-
end
|
|
58
59
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
60
|
+
describe '#title' do
|
|
61
|
+
it 'returns the title attribute' do
|
|
62
|
+
title = 'The brainfuck language is an esoteric programming language noted for its extreme minimalism'
|
|
63
|
+
expect(browser.pre(class: 'brainfuck').title).to eq title
|
|
64
|
+
end
|
|
64
65
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
it "returns an empty string if the element exists and the attribute doesn't" do
|
|
67
|
+
expect(browser.pre(index: 0).title).to eq ''
|
|
68
|
+
end
|
|
68
69
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
it "raises UnknownObjectException if the pre doesn't exist" do
|
|
71
|
+
expect { browser.pre(id: 'no_such_id').title }.to raise_unknown_object_exception
|
|
72
|
+
expect { browser.pre(xpath: "//pre[@id='no_such_id']").title }.to raise_unknown_object_exception
|
|
73
|
+
end
|
|
72
74
|
end
|
|
73
|
-
end
|
|
74
75
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
76
|
+
describe '#text' do
|
|
77
|
+
it 'returns the text of the pre' do
|
|
78
|
+
expect(browser.pre(class: 'haskell').text).to eq 'main = putStrLn "Hello World"'
|
|
79
|
+
end
|
|
79
80
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
it "returns an empty string if the element doesn't contain any text" do
|
|
82
|
+
expect(browser.pre(index: 0).text).to eq ''
|
|
83
|
+
end
|
|
83
84
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
85
|
+
it "raises UnknownObjectException if the pre doesn't exist" do
|
|
86
|
+
expect { browser.pre(id: 'no_such_id').text }.to raise_unknown_object_exception
|
|
87
|
+
expect { browser.pre(xpath: "//pre[@id='no_such_id']").text }.to raise_unknown_object_exception
|
|
88
|
+
end
|
|
87
89
|
end
|
|
88
|
-
end
|
|
89
90
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
91
|
+
describe '#respond_to?' do
|
|
92
|
+
it 'returns true for all attribute methods' do
|
|
93
|
+
expect(browser.image(index: 0)).to respond_to(:class_name)
|
|
94
|
+
expect(browser.image(index: 0)).to respond_to(:id)
|
|
95
|
+
expect(browser.image(index: 0)).to respond_to(:title)
|
|
96
|
+
expect(browser.image(index: 0)).to respond_to(:text)
|
|
97
|
+
end
|
|
96
98
|
end
|
|
97
99
|
end
|
|
98
100
|
end
|
|
@@ -2,39 +2,41 @@
|
|
|
2
2
|
|
|
3
3
|
require 'watirspec_helper'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
module Watir
|
|
6
|
+
describe PreCollection do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('non_control_elements.html'))
|
|
9
|
+
end
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
describe 'with selectors' do
|
|
12
|
+
it 'returns the matching elements' do
|
|
13
|
+
expect(browser.pres(class: 'c-plus-plus').to_a).to eq [browser.pre(class: 'c-plus-plus')]
|
|
14
|
+
end
|
|
13
15
|
end
|
|
14
|
-
end
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
describe '#length' do
|
|
18
|
+
it 'returns the number of pres' do
|
|
19
|
+
expect(browser.pres.length).to eq 7
|
|
20
|
+
end
|
|
19
21
|
end
|
|
20
|
-
end
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
describe '#[]' do
|
|
24
|
+
it 'returns the pre at the given index' do
|
|
25
|
+
expect(browser.pres[1].id).to eq 'rspec'
|
|
26
|
+
end
|
|
25
27
|
end
|
|
26
|
-
end
|
|
27
28
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
describe '#each' do
|
|
30
|
+
it 'iterates through pres correctly' do
|
|
31
|
+
count = 0
|
|
31
32
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
browser.pres.each_with_index do |p, index|
|
|
34
|
+
expect(p.id).to eq browser.pre(index: index).id
|
|
35
|
+
count += 1
|
|
36
|
+
end
|
|
36
37
|
|
|
37
|
-
|
|
38
|
+
expect(count).to be > 0
|
|
39
|
+
end
|
|
38
40
|
end
|
|
39
41
|
end
|
|
40
42
|
end
|