page-object 1.1.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.coveralls.yml +1 -0
- data/.gitignore +1 -0
- data/.travis.yml +7 -2
- data/ChangeLog +14 -1
- data/Gemfile +4 -2
- data/README.md +2 -0
- data/Rakefile +5 -1
- data/features/async.feature +3 -12
- data/features/audio.feature +10 -14
- data/features/element.feature +21 -0
- data/features/gxt_table_extension.feature +1 -2
- data/features/html/multi_elements.html +11 -10
- data/features/html/static_elements.html +3 -16
- data/features/html/widgets.html +20 -0
- data/features/italic.feature +21 -0
- data/features/multi_elements.feature +28 -22
- data/features/sample-app/public/audio_video.html +23 -0
- data/features/step_definitions/audio_steps.rb +6 -6
- data/features/step_definitions/element_steps.rb +28 -0
- data/features/step_definitions/gxt_table_steps.rb +1 -6
- data/features/step_definitions/italic_steps.rb +12 -0
- data/features/step_definitions/multi_elements_steps.rb +13 -0
- data/features/step_definitions/page_traversal_steps.rb +4 -0
- data/features/step_definitions/table_row_steps.rb +23 -0
- data/features/step_definitions/video_steps.rb +3 -3
- data/features/support/audio_video_page.rb +24 -0
- data/features/support/page.rb +20 -20
- data/features/support/url_helper.rb +4 -0
- data/features/table_row.feature +43 -0
- data/features/video.feature +1 -5
- data/lib/page-object.rb +4 -0
- data/lib/page-object/accessors.rb +88 -4
- data/lib/page-object/elements.rb +2 -1
- data/lib/page-object/elements/element.rb +5 -5
- data/lib/page-object/elements/italic.rb +11 -0
- data/lib/page-object/elements/ordered_list.rb +1 -1
- data/lib/page-object/elements/unordered_list.rb +1 -1
- data/lib/page-object/locator_generator.rb +2 -0
- data/lib/page-object/platforms/selenium_webdriver/element.rb +37 -0
- data/lib/page-object/platforms/selenium_webdriver/ordered_list.rb +10 -8
- data/lib/page-object/platforms/selenium_webdriver/page_object.rb +51 -1
- data/lib/page-object/platforms/selenium_webdriver/unordered_list.rb +7 -9
- data/lib/page-object/platforms/watir_webdriver/element.rb +45 -1
- data/lib/page-object/platforms/watir_webdriver/ordered_list.rb +9 -4
- data/lib/page-object/platforms/watir_webdriver/page_object.rb +81 -50
- data/lib/page-object/platforms/watir_webdriver/unordered_list.rb +11 -5
- data/lib/page-object/version.rb +1 -1
- data/lib/page-object/widgets.rb +1 -1
- data/page-object.gemspec +1 -0
- data/spec/page-object/element_locators_spec.rb +124 -80
- data/spec/page-object/elements/element_spec.rb +83 -1
- data/spec/page-object/elements/italic_spec.rb +29 -0
- data/spec/page-object/elements/media_spec.rb +63 -0
- data/spec/page-object/elements/ordered_list_spec.rb +6 -22
- data/spec/page-object/elements/selenium_element_spec.rb +41 -0
- data/spec/page-object/elements/unordered_list_spec.rb +4 -21
- data/spec/page-object/elements/video_spec.rb +27 -0
- data/spec/page-object/elements/watir_element_spec.rb +48 -0
- data/spec/page-object/selenium_accessors_spec.rb +28 -9
- data/spec/page-object/watir_accessors_spec.rb +57 -1
- data/spec/spec_helper.rb +3 -6
- metadata +39 -3
@@ -78,7 +78,8 @@ describe "Element" do
|
|
78
78
|
end
|
79
79
|
|
80
80
|
context "interaction with native element" do
|
81
|
-
let(:
|
81
|
+
let(:wd) { double('') }
|
82
|
+
let(:native) { double(wd: wd) }
|
82
83
|
let(:element) { PageObject::Elements::Element.new(native, :platform => :watir_webdriver) }
|
83
84
|
|
84
85
|
it "should check if native is enabled" do
|
@@ -110,5 +111,86 @@ describe "Element" do
|
|
110
111
|
expect(native).to receive(:enabled?).and_return(false)
|
111
112
|
expect(element).to be_disabled
|
112
113
|
end
|
114
|
+
|
115
|
+
it "should know if a native is visible" do
|
116
|
+
expect(native).to receive(:present?).and_return(false)
|
117
|
+
expect(element.visible?).to eq(false)
|
118
|
+
end
|
119
|
+
|
120
|
+
it "should know if a native exists" do
|
121
|
+
expect(native).to receive(:exists?).and_return(true)
|
122
|
+
expect(element).to exist
|
123
|
+
end
|
124
|
+
|
125
|
+
it "should flash the native" do
|
126
|
+
expect(native).to receive(:flash)
|
127
|
+
element.flash
|
128
|
+
end
|
129
|
+
|
130
|
+
it "should inspect the native's text" do
|
131
|
+
expect(native).to receive(:text).and_return('My value is 42')
|
132
|
+
expect(element.text).to eq('My value is 42')
|
133
|
+
end
|
134
|
+
|
135
|
+
it "should inspect the native's html" do
|
136
|
+
expect(native).to receive(:html).and_return('<p>42</p>')
|
137
|
+
expect(element.html).to eq('<p>42</p>')
|
138
|
+
end
|
139
|
+
|
140
|
+
it "should inspect the native's value" do
|
141
|
+
expect(native).to receive(:html).and_return('42')
|
142
|
+
expect(element.html).to eq('42')
|
143
|
+
end
|
144
|
+
|
145
|
+
it "should inspect the native's tag name" do
|
146
|
+
expect(native).to receive(:attribute_value).and_return('bar')
|
147
|
+
expect(element.attribute('foo')).to eq('bar')
|
148
|
+
end
|
149
|
+
|
150
|
+
it "should fire the native's event" do
|
151
|
+
expect(native).to receive(:fire_event).with('hello')
|
152
|
+
element.fire_event('hello')
|
153
|
+
end
|
154
|
+
|
155
|
+
it "should hover" do
|
156
|
+
expect(native).to receive(:hover)
|
157
|
+
element.hover
|
158
|
+
end
|
159
|
+
|
160
|
+
it "should focus" do
|
161
|
+
expect(native).to receive(:focus)
|
162
|
+
element.focus
|
163
|
+
end
|
164
|
+
|
165
|
+
it "should select the native's text" do
|
166
|
+
expect(native).to receive(:select_text).with('hello')
|
167
|
+
element.select_text('hello')
|
168
|
+
end
|
169
|
+
|
170
|
+
it "should wait until present" do
|
171
|
+
expect(native).to receive(:wait_until_present).with(42)
|
172
|
+
element.wait_until_present(42)
|
173
|
+
end
|
174
|
+
|
175
|
+
it "should send keys" do
|
176
|
+
expect(native).to receive(:send_keys).with('foo bar')
|
177
|
+
element.send_keys('foo bar')
|
178
|
+
end
|
179
|
+
|
180
|
+
it "should clear" do
|
181
|
+
expect(native).to receive(:clear)
|
182
|
+
element.clear
|
183
|
+
end
|
184
|
+
|
185
|
+
it "should inspect the native's id" do
|
186
|
+
expect(native).to receive(:id).and_return('element123')
|
187
|
+
expect(element.id).to eq('element123')
|
188
|
+
end
|
189
|
+
|
190
|
+
it "should inspect the native's id" do
|
191
|
+
expect(wd).to receive(:location_once_scrolled_into_view)
|
192
|
+
expect(native).to receive(:wd).and_return(wd)
|
193
|
+
element.scroll_into_view
|
194
|
+
end
|
113
195
|
end
|
114
196
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'page-object/elements'
|
3
|
+
|
4
|
+
describe PageObject::Elements::Italic do
|
5
|
+
let(:italic) { PageObject::Elements::Italic }
|
6
|
+
|
7
|
+
describe "when mapping how to find an element" do
|
8
|
+
it "should map watir types to same" do
|
9
|
+
[:class, :id, :index, :name, :xpath].each do |t|
|
10
|
+
identifier = italic.watir_identifier_for t => 'value'
|
11
|
+
expect(identifier.keys.first).to eql t
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should map selenium types to same" do
|
16
|
+
[:class, :id, :index, :name, :xpath].each do |t|
|
17
|
+
key, value = italic.selenium_identifier_for t => 'value'
|
18
|
+
expect(key).to eql t
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "interface" do
|
24
|
+
|
25
|
+
it "should register with tag :i" do
|
26
|
+
expect(::PageObject::Elements.element_class_for(:i)).to eql ::PageObject::Elements::Italic
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'page-object/elements'
|
3
|
+
|
4
|
+
describe PageObject::Elements::Media do
|
5
|
+
|
6
|
+
let(:media) { PageObject::Elements::Media.new(double(''), :platform => :watir_webdriver) }
|
7
|
+
|
8
|
+
it "should return autoplay" do
|
9
|
+
expect(media).to receive(:attribute).with(:autoplay).and_return(true)
|
10
|
+
expect(media.autoplay?).to eq(true)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should return controls" do
|
14
|
+
expect(media).to receive(:attribute).with(:controls).and_return(true)
|
15
|
+
expect(media.has_controls?).to eq(true)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should return paused" do
|
19
|
+
expect(media).to receive(:attribute).with(:paused).and_return(true)
|
20
|
+
expect(media.paused?).to eq(true)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should not return duration when not present" do
|
24
|
+
expect(media).to receive(:attribute).with(:duration).and_return(nil)
|
25
|
+
expect(media.duration).to eq(nil)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should return duration when present" do
|
29
|
+
expect(media).to receive(:attribute).with(:duration).and_return('1.405')
|
30
|
+
expect(media.duration).to eq(1.405)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should not return volume when not present" do
|
34
|
+
expect(media).to receive(:attribute).with(:volume).and_return(nil)
|
35
|
+
expect(media.volume).to eq(nil)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should return volume when present" do
|
39
|
+
expect(media).to receive(:attribute).with(:volume).and_return('3')
|
40
|
+
expect(media.volume).to eq(3)
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should return ended" do
|
44
|
+
expect(media).to receive(:attribute).with(:ended).and_return(true)
|
45
|
+
expect(media.ended?).to eq(true)
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should return seeking" do
|
49
|
+
expect(media).to receive(:attribute).with(:seeking).and_return(true)
|
50
|
+
expect(media.seeking?).to eq(true)
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should return loop" do
|
54
|
+
expect(media).to receive(:attribute).with(:loop).and_return(true)
|
55
|
+
expect(media.loop?).to eq(true)
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should return muted" do
|
59
|
+
expect(media).to receive(:attribute).with(:muted).and_return(true)
|
60
|
+
expect(media.muted?).to eq(true)
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
@@ -30,23 +30,14 @@ describe PageObject::Elements::OrderedList do
|
|
30
30
|
context "for watir" do
|
31
31
|
it "should return a list item when indexed" do
|
32
32
|
ol = PageObject::Elements::OrderedList.new(ol_element, :platform => :watir_webdriver)
|
33
|
-
|
34
|
-
|
35
|
-
allow(ol_element).to receive(:map).and_return([ol_element])
|
36
|
-
allow(ol_element).to receive(:parent).and_return(ol_element)
|
37
|
-
allow(ol_element).to receive(:element).and_return(ol_element)
|
38
|
-
allow(ol_element).to receive(:==).and_return(true)
|
33
|
+
expect(ol_element).to receive(:find_elements).
|
34
|
+
and_return([ol_element, ol_element])
|
39
35
|
ol[1]
|
40
36
|
end
|
41
37
|
|
42
38
|
it "should know how many list items it contains" do
|
43
39
|
ol = PageObject::Elements::OrderedList.new(ol_element, :platform => :watir_webdriver)
|
44
|
-
|
45
|
-
allow(ol_element).to receive(:find_elements).and_return(ol_element)
|
46
|
-
allow(ol_element).to receive(:map).and_return([ol_element])
|
47
|
-
allow(ol_element).to receive(:parent).and_return(ol_element)
|
48
|
-
allow(ol_element).to receive(:element).and_return(ol_element)
|
49
|
-
allow(ol_element).to receive(:==).and_return(true)
|
40
|
+
expect(ol_element).to receive(:find_elements).and_return([ol_element])
|
50
41
|
expect(ol.items).to eql 1
|
51
42
|
end
|
52
43
|
|
@@ -63,21 +54,14 @@ describe PageObject::Elements::OrderedList do
|
|
63
54
|
context "for selenium" do
|
64
55
|
it "should return a list item when indexed" do
|
65
56
|
ol = PageObject::Elements::OrderedList.new(ol_element, :platform => :selenium_webdriver)
|
66
|
-
expect(ol_element).to receive(:find_elements).
|
67
|
-
|
68
|
-
expect(ol_element).to receive(:parent).and_return(ol_element)
|
69
|
-
expect(ol_element).to receive(:element).and_return(ol_element)
|
70
|
-
expect(ol_element).to receive(:==).and_return(true)
|
57
|
+
expect(ol_element).to receive(:find_elements).
|
58
|
+
and_return([ol_element, ol_element])
|
71
59
|
ol[1]
|
72
60
|
end
|
73
61
|
|
74
62
|
it "should know how many list items it contains" do
|
75
63
|
ol = PageObject::Elements::OrderedList.new(ol_element, :platform => :selenium_webdriver)
|
76
|
-
expect(ol_element).to receive(:find_elements).and_return(ol_element)
|
77
|
-
expect(ol_element).to receive(:map).and_return([ol_element])
|
78
|
-
expect(ol_element).to receive(:parent).and_return(ol_element)
|
79
|
-
expect(ol_element).to receive(:element).and_return(ol_element)
|
80
|
-
expect(ol_element).to receive(:==).and_return(true)
|
64
|
+
expect(ol_element).to receive(:find_elements).and_return([ol_element])
|
81
65
|
expect(ol.items).to eql 1
|
82
66
|
end
|
83
67
|
|
@@ -174,4 +174,45 @@ describe "Element for Selenium" do
|
|
174
174
|
expect(@selenium_driver).to receive(:location_once_scrolled_into_view)
|
175
175
|
@selenium_element.scroll_into_view
|
176
176
|
end
|
177
|
+
|
178
|
+
it "should have a location" do
|
179
|
+
expect(@selenium_driver).to receive(:location)
|
180
|
+
@selenium_element.location
|
181
|
+
end
|
182
|
+
|
183
|
+
it "should have a size" do
|
184
|
+
expect(@selenium_driver).to receive(:size)
|
185
|
+
@selenium_element.size
|
186
|
+
end
|
187
|
+
|
188
|
+
it "should have a height" do
|
189
|
+
expect(@selenium_driver).to receive(:size).and_return({'width' => 30, 'height' => 20})
|
190
|
+
expect(@selenium_element.height).to eql 20
|
191
|
+
end
|
192
|
+
|
193
|
+
it "should have a width" do
|
194
|
+
expect(@selenium_driver).to receive(:size).and_return({'width' => 30, 'height' => 20})
|
195
|
+
expect(@selenium_element.width).to eql 30
|
196
|
+
end
|
197
|
+
|
198
|
+
it "should have a centre" do
|
199
|
+
expect(@selenium_driver).to receive(:location).and_return({'y' => 80, 'x' => 40})
|
200
|
+
expect(@selenium_driver).to receive(:size).and_return({'width' => 30, 'height' => 20})
|
201
|
+
expect(@selenium_element.centre).to include(
|
202
|
+
'y' => 90,
|
203
|
+
'x' => 55
|
204
|
+
)
|
205
|
+
end
|
206
|
+
|
207
|
+
it "should have a centre greater than y position" do
|
208
|
+
expect(@selenium_driver).to receive(:location).and_return({'y' => 80, 'x' => 40}).twice
|
209
|
+
expect(@selenium_driver).to receive(:size).and_return({'width' => 30, 'height' => 20})
|
210
|
+
expect(@selenium_element.centre['y']).to be > @selenium_element.location['y']
|
211
|
+
end
|
212
|
+
|
213
|
+
it "should have a centre greater than x position" do
|
214
|
+
expect(@selenium_driver).to receive(:location).and_return({'y' => 80, 'x' => 40}).twice
|
215
|
+
expect(@selenium_driver).to receive(:size).and_return({'width' => 30, 'height' => 20})
|
216
|
+
expect(@selenium_element.centre['x']).to be > @selenium_element.location['x']
|
217
|
+
end
|
177
218
|
end
|
@@ -30,23 +30,14 @@ describe PageObject::Elements::UnorderedList do
|
|
30
30
|
context "for watir" do
|
31
31
|
it "should return a list item when indexed" do
|
32
32
|
ul = PageObject::Elements::UnorderedList.new(ul_element, :platform => :watir_webdriver)
|
33
|
-
allow(ul_element).to receive(:uls).and_return([ul_element])
|
34
33
|
allow(ul_element).to receive(:find_elements).and_return(ul_element)
|
35
|
-
|
36
|
-
allow(ul_element).to receive(:parent).and_return(ul_element)
|
37
|
-
allow(ul_element).to receive(:element).and_return(ul_element)
|
38
|
-
allow(ul_element).to receive(:==).and_return(true)
|
34
|
+
expect(ul_element).to receive(:[])
|
39
35
|
ul[1]
|
40
36
|
end
|
41
37
|
|
42
38
|
it "should know how many items it contains" do
|
43
39
|
ul = PageObject::Elements::UnorderedList.new(ul_element, :platform => :watir_webdriver)
|
44
|
-
allow(ul_element).to receive(:
|
45
|
-
allow(ul_element).to receive(:find_elements).and_return(ul_element)
|
46
|
-
allow(ul_element).to receive(:map).and_return([ul_element])
|
47
|
-
allow(ul_element).to receive(:parent).and_return(ul_element)
|
48
|
-
allow(ul_element).to receive(:element).and_return(ul_element)
|
49
|
-
allow(ul_element).to receive(:==).and_return(true)
|
40
|
+
allow(ul_element).to receive(:find_elements).and_return([ul_element])
|
50
41
|
expect(ul.items).to eql 1
|
51
42
|
end
|
52
43
|
|
@@ -63,21 +54,13 @@ describe PageObject::Elements::UnorderedList do
|
|
63
54
|
context "for selenium" do
|
64
55
|
it "should return a list item when indexed" do
|
65
56
|
ul = PageObject::Elements::UnorderedList.new(ul_element, :platform => :selenium_webdriver)
|
66
|
-
expect(ul_element).to receive(:find_elements).and_return(ul_element)
|
67
|
-
expect(ul_element).to receive(:map).and_return([ul_element])
|
68
|
-
expect(ul_element).to receive(:parent).and_return(ul_element)
|
69
|
-
expect(ul_element).to receive(:element).and_return(ul_element)
|
70
|
-
expect(ul_element).to receive(:==).and_return(true)
|
57
|
+
expect(ul_element).to receive(:find_elements).and_return([ul_element, ul_element])
|
71
58
|
ul[1]
|
72
59
|
end
|
73
60
|
|
74
61
|
it "should know how many items it contains" do
|
75
62
|
ul = PageObject::Elements::UnorderedList.new(ul_element, :platform => :selenium_webdriver)
|
76
|
-
expect(ul_element).to receive(:find_elements).and_return(ul_element)
|
77
|
-
expect(ul_element).to receive(:map).and_return([ul_element])
|
78
|
-
expect(ul_element).to receive(:parent).and_return(ul_element)
|
79
|
-
expect(ul_element).to receive(:element).and_return(ul_element)
|
80
|
-
expect(ul_element).to receive(:==).and_return(true)
|
63
|
+
expect(ul_element).to receive(:find_elements).and_return([ul_element])
|
81
64
|
expect(ul.items).to eql 1
|
82
65
|
end
|
83
66
|
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'page-object/elements'
|
3
|
+
|
4
|
+
describe PageObject::Elements::ListItem do
|
5
|
+
|
6
|
+
let(:video) { PageObject::Elements::Video.new(double(''), :platform => :watir_webdriver) }
|
7
|
+
|
8
|
+
it "should return height when present" do
|
9
|
+
expect(video).to receive(:attribute).with(:height).and_return("20")
|
10
|
+
expect(video.height).to eq(20)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should not return height when not present" do
|
14
|
+
expect(video).to receive(:attribute).with(:height).and_return(nil)
|
15
|
+
expect(video.height).to eq(nil)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should return width when present" do
|
19
|
+
expect(video).to receive(:attribute).with(:width).and_return("20")
|
20
|
+
expect(video.width).to eq(20)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should not return width when not present" do
|
24
|
+
expect(video).to receive(:attribute).with(:width).and_return(nil)
|
25
|
+
expect(video.width).to eq(nil)
|
26
|
+
end
|
27
|
+
end
|
@@ -142,4 +142,52 @@ describe "Element for Watir" do
|
|
142
142
|
expect(watir_driver).to receive(:location_once_scrolled_into_view)
|
143
143
|
watir_element.scroll_into_view
|
144
144
|
end
|
145
|
+
|
146
|
+
it "should know its location" do
|
147
|
+
allow(watir_driver).to receive(:wd).and_return(watir_driver)
|
148
|
+
expect(watir_driver).to receive(:location)
|
149
|
+
watir_element.location
|
150
|
+
end
|
151
|
+
|
152
|
+
it "should know its size" do
|
153
|
+
allow(watir_driver).to receive(:wd).and_return(watir_driver)
|
154
|
+
expect(watir_driver).to receive(:size)
|
155
|
+
watir_element.size
|
156
|
+
end
|
157
|
+
|
158
|
+
it "should have a height" do
|
159
|
+
allow(watir_driver).to receive(:wd).and_return(watir_driver)
|
160
|
+
expect(watir_driver).to receive(:size).and_return({'width' => 30, 'height' => 20})
|
161
|
+
expect(watir_element.height).to eql 20
|
162
|
+
end
|
163
|
+
|
164
|
+
it "should have a width" do
|
165
|
+
allow(watir_driver).to receive(:wd).and_return(watir_driver)
|
166
|
+
expect(watir_driver).to receive(:size).and_return({'width' => 30, 'height' => 20})
|
167
|
+
expect(watir_element.width).to eql 30
|
168
|
+
end
|
169
|
+
|
170
|
+
it "should have a centre" do
|
171
|
+
allow(watir_driver).to receive(:wd).and_return(watir_driver)
|
172
|
+
expect(watir_driver).to receive(:location).and_return({'y' => 80, 'x' => 40})
|
173
|
+
expect(watir_driver).to receive(:size).and_return({'width' => 30, 'height' => 20})
|
174
|
+
expect(watir_element.centre).to include(
|
175
|
+
'y' => 90,
|
176
|
+
'x' => 55
|
177
|
+
)
|
178
|
+
end
|
179
|
+
|
180
|
+
it "should have a centre greater than y position" do
|
181
|
+
allow(watir_driver).to receive(:wd).and_return(watir_driver)
|
182
|
+
expect(watir_driver).to receive(:location).and_return({'y' => 80, 'x' => 40}).twice
|
183
|
+
expect(watir_driver).to receive(:size).and_return({'width' => 30, 'height' => 20})
|
184
|
+
expect(watir_element.centre['y']).to be > watir_element.location['y']
|
185
|
+
end
|
186
|
+
|
187
|
+
it "should have a centre greater than x position" do
|
188
|
+
allow(watir_driver).to receive(:wd).and_return(watir_driver)
|
189
|
+
expect(watir_driver).to receive(:location).and_return({'y' => 80, 'x' => 40}).twice
|
190
|
+
expect(watir_driver).to receive(:size).and_return({'width' => 30, 'height' => 20})
|
191
|
+
expect(watir_element.centre['x']).to be > watir_element.location['x']
|
192
|
+
end
|
145
193
|
end
|
@@ -35,7 +35,8 @@ class SeleniumAccessorsTestPageObject
|
|
35
35
|
canvas(:my_canvas, :id => 'canvas')
|
36
36
|
audio(:acdc, :id => 'audio_id')
|
37
37
|
video(:movie, :id => 'movie_id')
|
38
|
-
b(:bold, :id=>'bold')
|
38
|
+
b(:bold, :id => 'bold')
|
39
|
+
i(:italic, :id => 'italic')
|
39
40
|
end
|
40
41
|
|
41
42
|
class SeleniumBlockPageObject
|
@@ -134,13 +135,17 @@ class SeleniumBlockPageObject
|
|
134
135
|
b :bold do |element|
|
135
136
|
'b'
|
136
137
|
end
|
138
|
+
|
139
|
+
i :italic do |element|
|
140
|
+
'i'
|
141
|
+
end
|
137
142
|
end
|
138
143
|
|
139
144
|
describe PageObject::Accessors do
|
140
145
|
let(:selenium_browser) { mock_selenium_browser }
|
141
146
|
let(:selenium_page_object) { SeleniumAccessorsTestPageObject.new(selenium_browser) }
|
142
147
|
let(:block_page_object) { SeleniumBlockPageObject.new(selenium_browser) }
|
143
|
-
|
148
|
+
|
144
149
|
before(:each) do
|
145
150
|
allow(selenium_browser).to receive(:switch_to).and_return(selenium_browser)
|
146
151
|
allow(selenium_browser).to receive(:default_content)
|
@@ -241,7 +246,7 @@ describe PageObject::Accessors do
|
|
241
246
|
element = selenium_page_object.state_element
|
242
247
|
expect(element).to be_instance_of PageObject::Elements::SelectList
|
243
248
|
end
|
244
|
-
|
249
|
+
|
245
250
|
it "should return list of selection options" do
|
246
251
|
option1 = double('option')
|
247
252
|
option2 = double('option')
|
@@ -251,10 +256,10 @@ describe PageObject::Accessors do
|
|
251
256
|
select_element = double("select")
|
252
257
|
expect(select_element).to receive(:options).twice.and_return([option1, option2])
|
253
258
|
expect(selenium_page_object).to receive(:state_element).and_return(select_element)
|
254
|
-
|
259
|
+
|
255
260
|
expect(selenium_page_object.state_options).to eql ["CA","OH"]
|
256
261
|
end
|
257
|
-
|
262
|
+
|
258
263
|
end
|
259
264
|
|
260
265
|
|
@@ -417,21 +422,21 @@ describe PageObject::Accessors do
|
|
417
422
|
expect(element).to be_instance_of PageObject::Elements::OrderedList
|
418
423
|
end
|
419
424
|
end
|
420
|
-
|
425
|
+
|
421
426
|
describe "h1 accessors" do
|
422
427
|
it "should retrieve the text from the h1" do
|
423
428
|
expect(selenium_browser).to receive(:find_element).and_return(selenium_browser)
|
424
429
|
expect(selenium_browser).to receive(:text).and_return("value")
|
425
430
|
expect(selenium_page_object.heading1).to eql "value"
|
426
431
|
end
|
427
|
-
|
432
|
+
|
428
433
|
it "should retrieve the element from the page" do
|
429
434
|
expect(selenium_browser).to receive(:find_element).and_return(selenium_browser)
|
430
435
|
element = selenium_page_object.heading1_element
|
431
436
|
expect(element).to be_instance_of PageObject::Elements::Heading
|
432
437
|
end
|
433
438
|
end
|
434
|
-
|
439
|
+
|
435
440
|
describe "h2 accessors" do
|
436
441
|
it "should retrieve the text from the h2" do
|
437
442
|
expect(selenium_browser).to receive(:find_element).and_return(selenium_browser)
|
@@ -567,7 +572,7 @@ describe PageObject::Accessors do
|
|
567
572
|
end
|
568
573
|
end
|
569
574
|
end
|
570
|
-
|
575
|
+
|
571
576
|
describe "audio accessors" do
|
572
577
|
context "when called on a page object" do
|
573
578
|
it "should generate accessor methods" do
|
@@ -606,4 +611,18 @@ describe PageObject::Accessors do
|
|
606
611
|
end
|
607
612
|
end
|
608
613
|
|
614
|
+
describe "i accessors" do
|
615
|
+
it "should retrieve the text from the i" do
|
616
|
+
expect(selenium_browser).to receive(:find_element).and_return(selenium_browser)
|
617
|
+
expect(selenium_browser).to receive(:text).and_return("value")
|
618
|
+
expect(selenium_page_object.italic).to eql "value"
|
619
|
+
end
|
620
|
+
|
621
|
+
it "should retrieve the element from the page" do
|
622
|
+
expect(selenium_browser).to receive(:find_element).and_return(selenium_browser)
|
623
|
+
element = selenium_page_object.italic_element
|
624
|
+
expect(element).to be_instance_of PageObject::Elements::Italic
|
625
|
+
end
|
626
|
+
end
|
627
|
+
|
609
628
|
end
|