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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e9da44e461744eab4d446edf6dae5566da91c771
|
4
|
+
data.tar.gz: 76d49ecd39139b07d5883a6ce88b29443e65e47c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ed083f8285b0c1ed5cad169b809e89263f8a4bb4d2ea99e803df0c79d7f8178ef272c9b133b01227d9fd07e92f14318900dd26f457add8e9d120e15dc0847497
|
7
|
+
data.tar.gz: d789f587282a2106d9543ca7e23e735e315c653d3c3b8289a3467e7c2ff0be1eafc4008b99f7eba84929fe54af92271e9d03a99560014d42b6159ca5c00ec410
|
data/.coveralls.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
service_name: travis-ci
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -1,10 +1,15 @@
|
|
1
|
+
sudo: false
|
1
2
|
language: ruby
|
3
|
+
cache: bundler
|
2
4
|
rvm:
|
3
|
-
- 1.9.3
|
4
5
|
- 2.0.0
|
5
|
-
- 2.1
|
6
|
+
- 2.1
|
7
|
+
- 2.2
|
6
8
|
- jruby-19mode
|
7
9
|
|
8
10
|
before_script:
|
9
11
|
- "export DISPLAY=:99.0"
|
10
12
|
- "sh -e /etc/init.d/xvfb start"
|
13
|
+
|
14
|
+
script:
|
15
|
+
- "bundle exec rake test_with_coveralls"
|
data/ChangeLog
CHANGED
@@ -1,4 +1,17 @@
|
|
1
|
-
=== Version 1.1.
|
1
|
+
=== Version 1.1.1 / 2016-1-7
|
2
|
+
* Enhancements
|
3
|
+
* Added row accessor method and support for finding row elements directly (Thanks Ethan Hedrick)
|
4
|
+
* Added list_items method to UnorderedList to get an array of children.
|
5
|
+
* Speed optimizations for UnorderedList
|
6
|
+
* Added list_items method to OrderedList to get an array of children.
|
7
|
+
* Speed optimizations for OrderedList
|
8
|
+
* Added ability to check if a section is visible?, present?, or exists? (Thanks Donavan Stanley)
|
9
|
+
* Added support for the Italic (i) element (Thanks Sergey Morozov)
|
10
|
+
* Added size and location methods to all elements (Thanks Steve Jackson)
|
11
|
+
* Added width, height, and centre methods for elements (Thanks David Selby)
|
12
|
+
* Added missing right_click method for watir (Thanks David Selby)
|
13
|
+
|
14
|
+
=== Version 1.1.0 / 2015-5-2
|
2
15
|
* Enhancements
|
3
16
|
* Performance enhancements when initializing elements (Thanks Dane Andersen)
|
4
17
|
* Enabled button elements to return text when using selenium-webdriver.
|
data/Gemfile
CHANGED
@@ -2,12 +2,14 @@ source "http://rubygems.org"
|
|
2
2
|
|
3
3
|
# adding rake so travis-ci will build properly
|
4
4
|
gem 'rake'
|
5
|
-
gem 'fuubar'
|
6
|
-
gem 'fuubar-cucumber'
|
5
|
+
gem 'fuubar', '>= 2.0.0'
|
6
|
+
gem 'fuubar-cucumber', '>= 0.0.22'
|
7
7
|
gem 'rb-fsevent', :require => false if RUBY_PLATFORM =~ /darwin/i
|
8
8
|
gem 'growl'
|
9
9
|
gem 'guard-rspec'
|
10
10
|
gem 'guard-cucumber'
|
11
11
|
gem 'net-http-persistent'
|
12
|
+
gem 'coveralls', require: false
|
13
|
+
|
12
14
|
|
13
15
|
gemspec
|
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# page-object
|
2
2
|
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/page-object.svg)](https://rubygems.org/gems/page-object)
|
3
4
|
[![Build Status](https://travis-ci.org/cheezy/page-object.png)](https://travis-ci.org/cheezy/page-object)
|
5
|
+
[![Coverage Status](https://coveralls.io/repos/cheezy/page-object/badge.svg?nocache)](https://coveralls.io/r/cheezy/page-object)
|
4
6
|
|
5
7
|
|
6
8
|
A simple gem that assists in creating flexible page objects for testing browser based applications. The goal is to facilitate creating abstraction layers in your tests to decouple the tests from the item they are testing and to provide a simple interface to the elements on a page. It works with both watir-webdriver and selenium-webdriver.
|
data/Rakefile
CHANGED
@@ -3,7 +3,9 @@ require 'bundler'
|
|
3
3
|
require 'rspec/core/rake_task'
|
4
4
|
require 'cucumber'
|
5
5
|
require 'cucumber/rake/task'
|
6
|
+
require 'coveralls/rake/task'
|
6
7
|
|
8
|
+
Coveralls::RakeTask.new
|
7
9
|
Bundler::GemHelper.install_tasks
|
8
10
|
|
9
11
|
RSpec::Core::RakeTask.new(:spec) do |spec|
|
@@ -32,4 +34,6 @@ task :lib do
|
|
32
34
|
$LOAD_PATH.unshift(File.expand_path("lib", File.dirname(__FILE__)))
|
33
35
|
end
|
34
36
|
|
35
|
-
task :
|
37
|
+
task :test_with_coveralls => [:test, 'coveralls:push']
|
38
|
+
|
39
|
+
task :default => :test_with_coveralls
|
data/features/async.feature
CHANGED
@@ -1,29 +1,20 @@
|
|
1
1
|
Feature: Handling Asynch calls
|
2
2
|
|
3
|
-
|
4
|
-
Given I am on the static elements page
|
5
|
-
When I retrieve a link element
|
6
|
-
Then I should be able to wait until it is present
|
7
|
-
And I should be able to wait until it is visible
|
8
|
-
And I should be able to wait until it is not visible
|
9
|
-
And I should be able to wait until a block returns true
|
10
|
-
|
11
|
-
Scenario: Click a button when it is visible
|
3
|
+
Background:
|
12
4
|
Given I am on the async elements page
|
5
|
+
|
6
|
+
Scenario: Click a button when it is visible
|
13
7
|
When I make the button invisible
|
14
8
|
Then I should be able to click it when it becomses visible
|
15
9
|
|
16
10
|
Scenario: Wait until something is not visible
|
17
|
-
Given I am on the async elements page
|
18
11
|
Then I should be able to wait until the button becomes invisible
|
19
12
|
|
20
13
|
Scenario: Wait for an element to appear on the page
|
21
|
-
Given I am on the async elements page
|
22
14
|
When I add a button a few seconds from now
|
23
15
|
Then I should be able to click it when it gets added
|
24
16
|
|
25
17
|
Scenario: Wait for an element to disappear from the page
|
26
|
-
Given I am on the async elements page
|
27
18
|
When I add a button a few seconds from now
|
28
19
|
And I remove a button a few seconds from now
|
29
20
|
Then I should not be able to find the button
|
data/features/audio.feature
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
Feature: Support for the audio element
|
2
2
|
|
3
3
|
Background:
|
4
|
-
Given I am on the
|
4
|
+
Given I am on the audio video page
|
5
5
|
|
6
6
|
Scenario: finding an audio element
|
7
|
-
When I retrieve the audio element
|
7
|
+
When I retrieve the audio element from the page
|
8
8
|
Then I should know it exists
|
9
9
|
And I should know it is visible
|
10
10
|
|
@@ -31,38 +31,34 @@ Feature: Support for the audio element
|
|
31
31
|
| name | index |
|
32
32
|
|
33
33
|
Scenario: Should know if it is autoplay
|
34
|
-
When I retrieve the audio element
|
34
|
+
When I retrieve the audio element from the page
|
35
35
|
Then I should know the audio is not autoplay
|
36
36
|
|
37
37
|
Scenario: Should know if the controls are displayed
|
38
|
-
When I retrieve the audio element
|
38
|
+
When I retrieve the audio element from the page
|
39
39
|
Then I should know that the controls are displayed
|
40
40
|
|
41
41
|
Scenario: Should know if it is paused
|
42
|
-
When I retrieve the audio element
|
42
|
+
When I retrieve the audio element from the page
|
43
43
|
Then I should know that the audio is paused
|
44
44
|
|
45
|
-
Scenario: Should know its duration
|
46
|
-
When I retrieve the audio element
|
47
|
-
Then I should know that the duration is greater than 74 seconds
|
48
|
-
|
49
45
|
Scenario: Should know its volume
|
50
|
-
When I retrieve the audio element
|
46
|
+
When I retrieve the audio element from the page
|
51
47
|
Then I should know that its volume is 1
|
52
48
|
|
53
49
|
Scenario: Should know if it has ended
|
54
|
-
When I retrieve the audio element
|
50
|
+
When I retrieve the audio element from the page
|
55
51
|
Then I should know that it has not ended
|
56
52
|
|
57
53
|
Scenario: Should know if it is seeking
|
58
|
-
When I retrieve the audio element
|
54
|
+
When I retrieve the audio element from the page
|
59
55
|
Then I should know that it is not seeking
|
60
56
|
|
61
57
|
Scenario: Should know if it is in a loop
|
62
|
-
When I retrieve the audio element
|
58
|
+
When I retrieve the audio element from the page
|
63
59
|
Then I should know that it is not in a loop
|
64
60
|
|
65
61
|
Scenario: Should know if it is muted
|
66
|
-
When I retrieve the audio element
|
62
|
+
When I retrieve the audio element from the page
|
67
63
|
Then I should know that it is muted
|
68
64
|
|
data/features/element.feature
CHANGED
@@ -320,3 +320,24 @@ Feature: Elements
|
|
320
320
|
|
321
321
|
Scenario: Selecting the text for an element
|
322
322
|
Then I should be able to select "Elements" from the paragraph
|
323
|
+
|
324
|
+
Scenario: Element location
|
325
|
+
When I retrieve a link element
|
326
|
+
Then I should be able to know its location
|
327
|
+
|
328
|
+
Scenario: Element size
|
329
|
+
When I retrieve a link element
|
330
|
+
Then I should be able to know its size
|
331
|
+
|
332
|
+
Scenario: Getting the height of an element
|
333
|
+
When I retrieve a link element
|
334
|
+
Then the element height is not 0
|
335
|
+
|
336
|
+
Scenario: Getting the width of an element
|
337
|
+
When I retrieve a link element
|
338
|
+
Then the element width is not 0
|
339
|
+
|
340
|
+
Scenario: Getting the centre of an element
|
341
|
+
When I retrieve a button element
|
342
|
+
Then the element centre should be greater than element y position
|
343
|
+
And the element centre should be greater than element x position
|
@@ -8,7 +8,6 @@ Feature: Gxt Table Extension
|
|
8
8
|
And I have registered the GxtTable with PageObject
|
9
9
|
And I define a page-object using that widget
|
10
10
|
And I am on the Gxt Examples page
|
11
|
-
And I have the Basic Grid opened
|
12
11
|
|
13
12
|
Scenario: Retrieve a GxtTable
|
14
13
|
When I retrieve a GxtTable widget
|
@@ -21,4 +20,4 @@ Feature: Gxt Table Extension
|
|
21
20
|
|
22
21
|
Scenario: Confirm a correct row count from a GxtTable
|
23
22
|
When I retrieve a GxtTable widget
|
24
|
-
Then the GxtTable should have "
|
23
|
+
Then the GxtTable should have "3" rows
|
@@ -19,7 +19,7 @@
|
|
19
19
|
<textarea rows="2" cols="20" class="textarea">textarea 1</textarea>
|
20
20
|
<textarea rows="2" cols="20" class="textarea">textarea 2</textarea>
|
21
21
|
<textarea rows="2" cols="20" class="textarea">textarea 3</textarea>
|
22
|
-
|
22
|
+
|
23
23
|
<select class="selectlist">
|
24
24
|
<option value="selectlist 1">Option 1</option>
|
25
25
|
</select>
|
@@ -33,7 +33,7 @@
|
|
33
33
|
<a href="blah.html" class="link">link 1</a>
|
34
34
|
<a href="blah.html" class="link">link 2</a>
|
35
35
|
<a href="blah.html" class="link">link 3</a>
|
36
|
-
|
36
|
+
|
37
37
|
<input class="checkbox" type="checkbox" value="checkbox 1"/>
|
38
38
|
<input class="checkbox" type="checkbox" value="checkbox 2"/>
|
39
39
|
<input class="checkbox" type="checkbox" value="checkbox 3"/>
|
@@ -41,15 +41,15 @@
|
|
41
41
|
<input type="radio" class="radio" value="radio 1">
|
42
42
|
<input type="radio" class="radio" value="radio 2">
|
43
43
|
<input type="radio" class="radio" value="radio 3">
|
44
|
-
|
44
|
+
|
45
45
|
<div class="div">Div 1</div>
|
46
46
|
<div class="div">Div 2</div>
|
47
47
|
<div class="div">Div 3</div>
|
48
|
-
|
48
|
+
|
49
49
|
<span class="span">Span 1</span>
|
50
50
|
<span class="span">Span 2</span>
|
51
51
|
<span class="span">Span 3</span>
|
52
|
-
|
52
|
+
|
53
53
|
<label class="label">Label 1</label>
|
54
54
|
<label class="label">Label 2</label>
|
55
55
|
<label class="label">Label 3</label>
|
@@ -77,7 +77,7 @@
|
|
77
77
|
<td>Data 9</td>
|
78
78
|
</tr>
|
79
79
|
</table>
|
80
|
-
|
80
|
+
|
81
81
|
<img src="images/circle.png" class="image", alt="image 1">
|
82
82
|
<img src="images/circle.png" class="image", alt="image 2">
|
83
83
|
<img src="images/circle.png" class="image", alt="image 3">
|
@@ -115,11 +115,11 @@
|
|
115
115
|
<h2 class="h2">H2 One</h2>
|
116
116
|
<h2 class="h2">H2 Two</h2>
|
117
117
|
<h2 class="h2">H2 Three</h2>
|
118
|
-
|
118
|
+
|
119
119
|
<h3 class="h3">H3 One</h3>
|
120
120
|
<h3 class="h3">H3 Two</h3>
|
121
121
|
<h3 class="h3">H3 Three</h3>
|
122
|
-
|
122
|
+
|
123
123
|
<h4 class="h4">H4 One</h4>
|
124
124
|
<h4 class="h4">H4 Two</h4>
|
125
125
|
<h4 class="h4">H4 Three</h4>
|
@@ -127,7 +127,7 @@
|
|
127
127
|
<h5 class="h5">H5 One</h5>
|
128
128
|
<h5 class="h5">H5 Two</h5>
|
129
129
|
<h5 class="h5">H5 Three</h5>
|
130
|
-
|
130
|
+
|
131
131
|
<h6 class="h6">H6 One</h6>
|
132
132
|
<h6 class="h6">H6 Two</h6>
|
133
133
|
<h6 class="h6">H6 Three</h6>
|
@@ -135,10 +135,11 @@
|
|
135
135
|
<p class="p">Paragraph One</p>
|
136
136
|
<p class="p">Paragraph Two</p>
|
137
137
|
<p class="p">Paragraph Three</p>
|
138
|
-
|
138
|
+
|
139
139
|
<input type="file" class="file_field_class" title="File Field 1" />
|
140
140
|
<input type="file" class="file_field_class" title="File Field 2" />
|
141
141
|
<input type="file" class="file_field_class" title="File Field 3" />
|
142
142
|
In bold <b>One B</b> and <b>Two B</b> for example text
|
143
|
+
In italic <i>One I</i> and <i>Two I</i> for example text
|
143
144
|
</body>
|
144
145
|
</html>
|
@@ -43,20 +43,6 @@
|
|
43
43
|
ctx.fillRect(0,0,150,75);
|
44
44
|
</script>
|
45
45
|
|
46
|
-
<audio controls id="audio" name="audio" class="audio">
|
47
|
-
<source src="04-Death_Becomes_Fur.mp4"
|
48
|
-
type='audio/mp4'/>
|
49
|
-
<source src="04-Death_Becomes_Fur.oga"
|
50
|
-
type='audio/ogg; codecs=vorbis'/>
|
51
|
-
<p>Your user agent does not support the HTML5 Audio element.</p>
|
52
|
-
</audio>
|
53
|
-
|
54
|
-
<video width="320" height="240" controls="controls" id="video" name="video" class="video">
|
55
|
-
<source src="movie.mp4" type="video/mp4" />
|
56
|
-
<source src="movie.ogg" type="video/ogg" />
|
57
|
-
Your browser does not support the video tag.
|
58
|
-
</video>
|
59
|
-
|
60
46
|
<svg width="100" height="100" id="the_svg">
|
61
47
|
<circle cx="50" cy="50" r="40" fill="red" stroke="blue" stroke-width="5" />
|
62
48
|
</svg>
|
@@ -100,7 +86,7 @@
|
|
100
86
|
</tr>
|
101
87
|
</thead>
|
102
88
|
<tbody>
|
103
|
-
<tr>
|
89
|
+
<tr id='tr_id' class='tr_class'>
|
104
90
|
<td>Data1</td>
|
105
91
|
<td>Data2</td>
|
106
92
|
</tr>
|
@@ -194,11 +180,12 @@
|
|
194
180
|
<summary id='summary_id'>The summary</summary>
|
195
181
|
The details
|
196
182
|
</details>
|
197
|
-
|
183
|
+
|
198
184
|
<figure id='figure_id'>
|
199
185
|
<img src="images/img_pulpit.jpg" alt="The Pulpit Rock" width="304" height="228">
|
200
186
|
</figure>
|
201
187
|
This text have <b id="b_id" class="b_class" name="b_name">some text in bold</b>
|
188
|
+
This text have <i id="i_id" class="i_class" name="i_name">some text in italic</i>
|
202
189
|
<button id="button_button">This button is a button</button>
|
203
190
|
<input id="input_button" type="button" value="This button is a input" />
|
204
191
|
</body>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
Feature: Italic
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given I am on the static elements page
|
5
|
+
|
6
|
+
Scenario: Getting the text of headings
|
7
|
+
When I get the italic text for the "i" element
|
8
|
+
Then I should see "some text in italic" in italic
|
9
|
+
|
10
|
+
Scenario Outline: Locating i on the Page
|
11
|
+
When I search italic text for the i by "<search_by>"
|
12
|
+
Then I should see "some text in italic" in italic
|
13
|
+
|
14
|
+
Scenarios:
|
15
|
+
| search_by |
|
16
|
+
| id |
|
17
|
+
| class |
|
18
|
+
| name |
|
19
|
+
| xpath |
|
20
|
+
| index |
|
21
|
+
| css |
|
@@ -9,7 +9,7 @@ Feature: Multi Elements
|
|
9
9
|
And the value of button 1 should be "Button 1"
|
10
10
|
And the value of button 2 should be "Button 2"
|
11
11
|
And the value of button 3 should be "Button 3"
|
12
|
-
|
12
|
+
|
13
13
|
Scenario: Selecting buttons using no identifier
|
14
14
|
When I select all buttons using no identifier
|
15
15
|
Then I should have 3 buttons
|
@@ -20,7 +20,7 @@ Feature: Multi Elements
|
|
20
20
|
And the value of text field 1 should be "text 1"
|
21
21
|
And the value of text field 2 should be "text 2"
|
22
22
|
And the value of text field 3 should be "text 3"
|
23
|
-
|
23
|
+
|
24
24
|
Scenario: Selecting text fields using no identifier
|
25
25
|
When I select all text fields using no identifier
|
26
26
|
Then I should have 3 text fields
|
@@ -79,7 +79,7 @@ Feature: Multi Elements
|
|
79
79
|
Scenario: Selecting checkboxes using no identifier
|
80
80
|
When I select checboxes using no identifier
|
81
81
|
Then I should have 3 checkboxes
|
82
|
-
|
82
|
+
|
83
83
|
Scenario: Selecting radio buttons using an identifier
|
84
84
|
When I select the radio button with class "radio"
|
85
85
|
Then I should have 3 radio buttons
|
@@ -141,7 +141,7 @@ Feature: Multi Elements
|
|
141
141
|
And the alt for image 1 should be "image 1"
|
142
142
|
And the alt for image 2 should be "image 2"
|
143
143
|
And the alt for image 3 should be "image 3"
|
144
|
-
|
144
|
+
|
145
145
|
Scenario: Selecting images using no identifier
|
146
146
|
When I select the images using no identifier
|
147
147
|
Then I should have 3 images
|
@@ -152,7 +152,7 @@ Feature: Multi Elements
|
|
152
152
|
And the action for form 1 should be "form1"
|
153
153
|
And the action for form 2 should be "form2"
|
154
154
|
And the action for form 3 should be "form3"
|
155
|
-
|
155
|
+
|
156
156
|
Scenario: Selecting forms using no identifier
|
157
157
|
When I select the forms using no identifier
|
158
158
|
Then I should have 3 forms
|
@@ -163,7 +163,7 @@ Feature: Multi Elements
|
|
163
163
|
And the text for list item 1 should be "Item One"
|
164
164
|
And the text for list item 2 should be "Item Two"
|
165
165
|
And the text for list item 3 should be "Item Three"
|
166
|
-
|
166
|
+
|
167
167
|
Scenario: Selecting list items using no identifier
|
168
168
|
When I select the list items using no identifier
|
169
169
|
Then I should have 8 list items
|
@@ -174,18 +174,18 @@ Feature: Multi Elements
|
|
174
174
|
And the text for the first item in unordered list 1 should be "Item One"
|
175
175
|
And the text for the first item in unordered list 2 should be "Item Four"
|
176
176
|
And the text for the first item in unordered list 3 should be "Item Five"
|
177
|
-
|
177
|
+
|
178
178
|
Scenario: Selecting unordered lists using no identifier
|
179
179
|
When I select the unordered list using no parameter
|
180
180
|
Then I should have 3 unordered lists
|
181
|
-
|
181
|
+
|
182
182
|
Scenario: Selecting ordered lists using an identifier
|
183
183
|
When I select the ordered lists with class "ol"
|
184
184
|
Then I should have 3 ordered lists
|
185
185
|
And the text for the first item in ordered list 1 should be "Number One"
|
186
186
|
And the text for the first item in ordered list 2 should be "Number Two"
|
187
187
|
And the text for the first item in ordered list 3 should be "Number Three"
|
188
|
-
|
188
|
+
|
189
189
|
Scenario: Selecting ordered lists using no identifier
|
190
190
|
When I select the ordered lists using no identifier
|
191
191
|
Then I should have 3 ordered lists
|
@@ -196,7 +196,7 @@ Feature: Multi Elements
|
|
196
196
|
And the text for h1 1 should be "H1 One"
|
197
197
|
And the text for h1 2 should be "H1 Two"
|
198
198
|
And the text for h1 3 should be "H1 Three"
|
199
|
-
|
199
|
+
|
200
200
|
Scenario: Selecting h1s using no identifier
|
201
201
|
When I select h1s using no identifier
|
202
202
|
Then I should have 3 h1s
|
@@ -207,7 +207,7 @@ Feature: Multi Elements
|
|
207
207
|
And the text for h2 1 should be "H2 One"
|
208
208
|
And the text for h2 2 should be "H2 Two"
|
209
209
|
And the text for h2 3 should be "H2 Three"
|
210
|
-
|
210
|
+
|
211
211
|
Scenario: Selecting h2s using no identifier
|
212
212
|
When I select h2s using no identifier
|
213
213
|
Then I should have 3 h2s
|
@@ -218,7 +218,7 @@ Feature: Multi Elements
|
|
218
218
|
And the text for h3 1 should be "H3 One"
|
219
219
|
And the text for h3 2 should be "H3 Two"
|
220
220
|
And the text for h3 3 should be "H3 Three"
|
221
|
-
|
221
|
+
|
222
222
|
Scenario: Selecting h3s using no identifier
|
223
223
|
When I select h3s using no identifier
|
224
224
|
Then I should have 3 h3s
|
@@ -229,18 +229,18 @@ Feature: Multi Elements
|
|
229
229
|
And the text for H4 1 should be "H4 One"
|
230
230
|
And the text for H4 2 should be "H4 Two"
|
231
231
|
And the text for H4 3 should be "H4 Three"
|
232
|
-
|
232
|
+
|
233
233
|
Scenario: Selecting h4s using no identifier
|
234
234
|
When I select h4s using no identifier
|
235
235
|
Then I should have 3 h4s
|
236
|
-
|
236
|
+
|
237
237
|
Scenario: Selecting h5s using an identifier
|
238
238
|
When I select the h5s with the class "h5"
|
239
239
|
Then I should have 3 h5s
|
240
240
|
And the text for H5 1 should be "H5 One"
|
241
241
|
And the text for H5 2 should be "H5 Two"
|
242
242
|
And the text for H5 3 should be "H5 Three"
|
243
|
-
|
243
|
+
|
244
244
|
Scenario: Selecting h5s using no identifier
|
245
245
|
When I select h5s using no identifier
|
246
246
|
Then I should have 3 h5s
|
@@ -251,7 +251,7 @@ Feature: Multi Elements
|
|
251
251
|
And the text for H6 1 should be "H6 One"
|
252
252
|
And the text for H6 2 should be "H6 Two"
|
253
253
|
And the text for H6 3 should be "H6 Three"
|
254
|
-
|
254
|
+
|
255
255
|
Scenario: Selecting h6s using no identifier
|
256
256
|
When I select h6s using no identifier
|
257
257
|
Then I should have 3 h6s
|
@@ -295,7 +295,7 @@ Feature: Multi Elements
|
|
295
295
|
And the text of div 1 should be "Div 1"
|
296
296
|
And the text of div 2 should be "Div 2"
|
297
297
|
And the text of div 3 should be "Div 3"
|
298
|
-
|
298
|
+
|
299
299
|
Scenario: Selecting all divs using a block instead of an identifier
|
300
300
|
When I select the divs using a block
|
301
301
|
Then I should have 3 divs
|
@@ -421,35 +421,35 @@ Feature: Multi Elements
|
|
421
421
|
And the text for h1 1 should be "H1 One"
|
422
422
|
And the text for h1 2 should be "H1 Two"
|
423
423
|
And the text for h1 3 should be "H1 Three"
|
424
|
-
|
424
|
+
|
425
425
|
Scenario: Selecting h2s based on a class declaration
|
426
426
|
When I select the h2s using the generated method
|
427
427
|
Then I should have 3 h2s
|
428
428
|
And the text for h2 1 should be "H2 One"
|
429
429
|
And the text for h2 2 should be "H2 Two"
|
430
430
|
And the text for h2 3 should be "H2 Three"
|
431
|
-
|
431
|
+
|
432
432
|
Scenario: Selecting h3s based on a class declaration
|
433
433
|
When I select the h3s using the generated method
|
434
434
|
Then I should have 3 h3s
|
435
435
|
And the text for h3 1 should be "H3 One"
|
436
436
|
And the text for h3 2 should be "H3 Two"
|
437
437
|
And the text for h3 3 should be "H3 Three"
|
438
|
-
|
438
|
+
|
439
439
|
Scenario: Selecting h4s based on a class declaration
|
440
440
|
When I select the h4s using the generated method
|
441
441
|
Then I should have 3 h4s
|
442
442
|
And the text for H4 1 should be "H4 One"
|
443
443
|
And the text for H4 2 should be "H4 Two"
|
444
444
|
And the text for H4 3 should be "H4 Three"
|
445
|
-
|
445
|
+
|
446
446
|
Scenario: Selecting h5s based on a class declaration
|
447
447
|
When I select the h5s using the generated method
|
448
448
|
Then I should have 3 h5s
|
449
449
|
And the text for H5 1 should be "H5 One"
|
450
450
|
And the text for H5 2 should be "H5 Two"
|
451
451
|
And the text for H5 3 should be "H5 Three"
|
452
|
-
|
452
|
+
|
453
453
|
Scenario: Selecting h6s based on a class declaration
|
454
454
|
When I select the h6s using the generated method
|
455
455
|
Then I should have 3 h6s
|
@@ -490,3 +490,9 @@ Feature: Multi Elements
|
|
490
490
|
Then I should have 2 bs
|
491
491
|
And the text for b 1 should be "One B"
|
492
492
|
And the text for b 2 should be "Two B"
|
493
|
+
|
494
|
+
Scenario: Selecting is using an identifier
|
495
|
+
When I select the is
|
496
|
+
Then I should have 2 is
|
497
|
+
And the text for i 1 should be "One I"
|
498
|
+
And the text for i 2 should be "Two I"
|