page-object 0.2.5 → 0.3.0
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.
- data/ChangeLog +25 -0
- data/Rakefile +3 -3
- data/features/element.feature +232 -1
- data/features/frames.feature +1 -1
- data/features/html/modal.html +17 -0
- data/features/html/modal_1.html +38 -0
- data/features/html/modal_2.html +27 -0
- data/features/html/nested_elements.html +42 -0
- data/features/html/static_elements.html +1 -0
- data/features/modal_dialog.feature +15 -0
- data/features/nested_elements.feature +73 -0
- data/features/step_definitions/frames_steps.rb +1 -1
- data/features/step_definitions/modal_dialog_steps.rb +62 -0
- data/features/step_definitions/nested_elements_steps.rb +165 -0
- data/features/support/page.rb +1 -0
- data/features/support/url_helper.rb +8 -0
- data/lib/page-object.rb +26 -0
- data/lib/page-object/accessors.rb +36 -36
- data/lib/page-object/elements/button.rb +3 -3
- data/lib/page-object/elements/check_box.rb +7 -7
- data/lib/page-object/elements/element.rb +16 -10
- data/lib/page-object/elements/form.rb +7 -7
- data/lib/page-object/elements/image.rb +7 -7
- data/lib/page-object/elements/link.rb +3 -3
- data/lib/page-object/elements/ordered_list.rb +7 -7
- data/lib/page-object/elements/radio_button.rb +7 -7
- data/lib/page-object/elements/select_list.rb +7 -7
- data/lib/page-object/elements/table.rb +7 -7
- data/lib/page-object/elements/table_row.rb +7 -7
- data/lib/page-object/elements/text_area.rb +7 -7
- data/lib/page-object/elements/text_field.rb +7 -7
- data/lib/page-object/elements/unordered_list.rb +7 -7
- data/lib/page-object/nested_elements.rb +72 -0
- data/lib/page-object/platforms.rb +2 -2
- data/lib/page-object/platforms/selenium_webdriver.rb +17 -0
- data/lib/page-object/platforms/{selenium → selenium_webdriver}/button.rb +1 -1
- data/lib/page-object/platforms/{selenium → selenium_webdriver}/check_box.rb +1 -1
- data/lib/page-object/platforms/{selenium → selenium_webdriver}/element.rb +1 -1
- data/lib/page-object/platforms/{watir → selenium_webdriver}/form.rb +1 -1
- data/lib/page-object/platforms/{selenium → selenium_webdriver}/image.rb +1 -1
- data/lib/page-object/platforms/{selenium → selenium_webdriver}/link.rb +1 -1
- data/lib/page-object/platforms/{selenium → selenium_webdriver}/ordered_list.rb +2 -2
- data/lib/page-object/platforms/{selenium → selenium_webdriver}/page_object.rb +59 -59
- data/lib/page-object/platforms/{selenium → selenium_webdriver}/radio_button.rb +1 -1
- data/lib/page-object/platforms/{selenium → selenium_webdriver}/select_list.rb +2 -2
- data/lib/page-object/platforms/{selenium → selenium_webdriver}/table.rb +2 -2
- data/lib/page-object/platforms/{selenium → selenium_webdriver}/table_row.rb +2 -2
- data/lib/page-object/platforms/{selenium → selenium_webdriver}/text_area.rb +1 -1
- data/lib/page-object/platforms/{selenium → selenium_webdriver}/text_field.rb +1 -1
- data/lib/page-object/platforms/{selenium → selenium_webdriver}/unordered_list.rb +2 -2
- data/lib/page-object/platforms/watir_webdriver.rb +17 -0
- data/lib/page-object/platforms/{watir → watir_webdriver}/check_box.rb +1 -1
- data/lib/page-object/platforms/{watir → watir_webdriver}/element.rb +1 -1
- data/lib/page-object/platforms/{selenium → watir_webdriver}/form.rb +1 -1
- data/lib/page-object/platforms/{watir → watir_webdriver}/image.rb +1 -1
- data/lib/page-object/platforms/{watir → watir_webdriver}/ordered_list.rb +2 -2
- data/lib/page-object/platforms/watir_webdriver/page_object.rb +486 -0
- data/lib/page-object/platforms/{watir → watir_webdriver}/radio_button.rb +1 -1
- data/lib/page-object/platforms/{watir → watir_webdriver}/select_list.rb +3 -3
- data/lib/page-object/platforms/{watir → watir_webdriver}/table.rb +2 -2
- data/lib/page-object/platforms/{watir → watir_webdriver}/table_row.rb +2 -2
- data/lib/page-object/platforms/{watir → watir_webdriver}/text_area.rb +1 -1
- data/lib/page-object/platforms/{watir → watir_webdriver}/text_field.rb +1 -1
- data/lib/page-object/platforms/{watir → watir_webdriver}/unordered_list.rb +2 -2
- data/lib/page-object/version.rb +1 -1
- data/page-object.gemspec +1 -1
- data/spec/page-object/elements/button_spec.rb +1 -1
- data/spec/page-object/elements/check_box_spec.rb +1 -1
- data/spec/page-object/elements/element_spec.rb +9 -5
- data/spec/page-object/elements/form_spec.rb +2 -2
- data/spec/page-object/elements/image_spec.rb +4 -4
- data/spec/page-object/elements/link_spec.rb +1 -1
- data/spec/page-object/elements/nested_element_spec.rb +185 -0
- data/spec/page-object/elements/ordered_list_spec.rb +6 -6
- data/spec/page-object/elements/radio_button_spec.rb +1 -1
- data/spec/page-object/elements/select_list_spec.rb +5 -5
- data/spec/page-object/elements/table_row_spec.rb +6 -6
- data/spec/page-object/elements/table_spec.rb +2 -2
- data/spec/page-object/elements/text_area_spec.rb +1 -1
- data/spec/page-object/elements/text_field_spec.rb +1 -1
- data/spec/page-object/elements/unordered_list_spec.rb +6 -6
- data/spec/page-object/page-object_spec.rb +12 -2
- data/spec/page-object/platforms/{selenium → selenium_webdriver}/selenium_page_object_spec.rb +2 -2
- data/spec/page-object/platforms/selenium_webdriver_spec.rb +29 -0
- data/spec/page-object/platforms/{watir_spec.rb → watir_webdriver_spec.rb} +11 -6
- metadata +58 -39
- data/lib/page-object/platforms/selenium.rb +0 -16
- data/lib/page-object/platforms/watir.rb +0 -16
- data/lib/page-object/platforms/watir/page_object.rb +0 -482
- data/spec/page-object/platforms/selenium_spec.rb +0 -26
data/ChangeLog
CHANGED
|
@@ -1,3 +1,28 @@
|
|
|
1
|
+
=== Version 0.3.0 / 2011-09-04
|
|
2
|
+
* Enhancements
|
|
3
|
+
* Changed namespace for selenium and watir to include webdriver
|
|
4
|
+
* Support for locating the following elements when nested
|
|
5
|
+
* Link
|
|
6
|
+
* Button
|
|
7
|
+
* TextField
|
|
8
|
+
* HiddenField
|
|
9
|
+
* TextArea
|
|
10
|
+
* SelectList
|
|
11
|
+
* Checkbox
|
|
12
|
+
* RadioButton
|
|
13
|
+
* Div
|
|
14
|
+
* Span
|
|
15
|
+
* Table
|
|
16
|
+
* TableCell
|
|
17
|
+
* Image
|
|
18
|
+
* Form
|
|
19
|
+
* OrderedList
|
|
20
|
+
* UnorderedList
|
|
21
|
+
* ListItem
|
|
22
|
+
* Added #modal_dialog to PageObject to override the default modal dialog behavior
|
|
23
|
+
* Changed element keys to include _webdriver
|
|
24
|
+
* Updated to use selenium-webdriver 2.5.0
|
|
25
|
+
|
|
1
26
|
=== Version 0.2.5 / 2011-08-19
|
|
2
27
|
* Enhancements
|
|
3
28
|
* #attach_to_window takes an optional block - will return to calling window after block executes
|
data/Rakefile
CHANGED
|
@@ -13,16 +13,16 @@ end
|
|
|
13
13
|
task :spec
|
|
14
14
|
|
|
15
15
|
namespace :features do
|
|
16
|
-
Cucumber::Rake::Task.new(:
|
|
16
|
+
Cucumber::Rake::Task.new(:watir_webdriver, "Run features with Watir") do |t|
|
|
17
17
|
t.profile = "watir"
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
-
Cucumber::Rake::Task.new(:
|
|
20
|
+
Cucumber::Rake::Task.new(:selenium_webdriver, "Run features with Selenium") do |t|
|
|
21
21
|
t.profile = "selenium"
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
desc 'Run all features'
|
|
25
|
-
task :all => [:
|
|
25
|
+
task :all => [:watir_webdriver, :selenium_webdriver]
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
desc 'Run all specs and cukes'
|
data/features/element.feature
CHANGED
|
@@ -1,8 +1,239 @@
|
|
|
1
1
|
Feature: Elements
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Background:
|
|
4
4
|
Given I am on the static elements page
|
|
5
|
+
|
|
6
|
+
Scenario: Clear an element
|
|
5
7
|
When I type "abcDEF" into the text field
|
|
6
8
|
Then the text field should contain "abcDEF"
|
|
7
9
|
When I clear the text field
|
|
8
10
|
Then the text field should contain ""
|
|
11
|
+
|
|
12
|
+
Scenario: Link element methods
|
|
13
|
+
When I retrieve a link element
|
|
14
|
+
Then I should know it exists
|
|
15
|
+
And I should know it is visible
|
|
16
|
+
And I should know its' text is "Google Search"
|
|
17
|
+
And I should know it is equal to itself
|
|
18
|
+
And I should know its' tag name is "a"
|
|
19
|
+
And I should know the attribute "readonly" is false
|
|
20
|
+
And I should be able to click it
|
|
21
|
+
|
|
22
|
+
@watir_only
|
|
23
|
+
Scenario: Link element methods for watir
|
|
24
|
+
When I retrieve a link element
|
|
25
|
+
Then I should know its' value is ""
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
Scenario: Button element methods
|
|
29
|
+
When I retrieve a button element
|
|
30
|
+
Then I should know it exists
|
|
31
|
+
And I should know it is visible
|
|
32
|
+
And I should know its' value is "Click Me"
|
|
33
|
+
And I should know it is equal to itself
|
|
34
|
+
And I should know its' tag name is "input"
|
|
35
|
+
And I should know the attribute "readonly" is false
|
|
36
|
+
And I should be able to click it
|
|
37
|
+
|
|
38
|
+
@watir_only
|
|
39
|
+
Scenario: Button element methods for watir
|
|
40
|
+
When I retrieve a button element
|
|
41
|
+
Then I should know its' text is "Click Me"
|
|
42
|
+
|
|
43
|
+
Scenario: Check Box element methods
|
|
44
|
+
When I retrieve a check box element
|
|
45
|
+
Then I should know it exists
|
|
46
|
+
And I should know it is visible
|
|
47
|
+
And I should know its' text is ""
|
|
48
|
+
And I should know its' value is "1"
|
|
49
|
+
And I should know it is equal to itself
|
|
50
|
+
And I should know its' tag name is "input"
|
|
51
|
+
And I should know the attribute "readonly" is false
|
|
52
|
+
And I should be able to click it
|
|
53
|
+
|
|
54
|
+
Scenario: Div element methods
|
|
55
|
+
When I retrieve the div element
|
|
56
|
+
Then I should know it exists
|
|
57
|
+
And I should know it is visible
|
|
58
|
+
And I should know its' text is "page-object rocks!"
|
|
59
|
+
And I should know it is equal to itself
|
|
60
|
+
And I should know its' tag name is "div"
|
|
61
|
+
And I should know the attribute "readonly" is false
|
|
62
|
+
And I should be able to click it
|
|
63
|
+
|
|
64
|
+
@watir_only
|
|
65
|
+
Scenario: Div element methods for watir
|
|
66
|
+
When I retrieve the div element
|
|
67
|
+
Then I should know its' value is ""
|
|
68
|
+
|
|
69
|
+
@selenium_only
|
|
70
|
+
Scenario: Div element methods for selenium
|
|
71
|
+
When I retrieve the div element
|
|
72
|
+
Then I should know its' value is nil
|
|
73
|
+
|
|
74
|
+
Scenario: Radio Button element methods
|
|
75
|
+
When I retrieve a radio button
|
|
76
|
+
Then I should know it exists
|
|
77
|
+
And I should know it is visible
|
|
78
|
+
And I should know its' text is ""
|
|
79
|
+
And I should know its' value is "Milk"
|
|
80
|
+
And I should know it is equal to itself
|
|
81
|
+
And I should know its' tag name is "input"
|
|
82
|
+
And I should know the attribute "readonly" is false
|
|
83
|
+
And I should be able to click it
|
|
84
|
+
|
|
85
|
+
Scenario: Select List element methods
|
|
86
|
+
When I retrieve a select list
|
|
87
|
+
Then I should know it exists
|
|
88
|
+
And I should know it is visible
|
|
89
|
+
And I should know its' text includes "Test 1"
|
|
90
|
+
And I should know its' value is "option1"
|
|
91
|
+
And I should know it is equal to itself
|
|
92
|
+
And I should know its' tag name is "select"
|
|
93
|
+
And I should know the attribute "readonly" is false
|
|
94
|
+
And I should be able to click it
|
|
95
|
+
|
|
96
|
+
Scenario: Table element methods
|
|
97
|
+
When I retrieve a table element
|
|
98
|
+
Then I should know it is visible
|
|
99
|
+
And I should know its' text includes "Data1"
|
|
100
|
+
And I should know it is equal to itself
|
|
101
|
+
And I should know its' tag name is "table"
|
|
102
|
+
And I should know the attribute "readonly" is false
|
|
103
|
+
And I should be able to click it
|
|
104
|
+
|
|
105
|
+
@watir_only
|
|
106
|
+
Scenario: Table element methods in watir
|
|
107
|
+
When I retrieve a table element
|
|
108
|
+
Then I should know it exists
|
|
109
|
+
And I should know its' value is ""
|
|
110
|
+
|
|
111
|
+
@selenium_only
|
|
112
|
+
Scenario: Table element methods in selenium
|
|
113
|
+
When I retrieve a table element
|
|
114
|
+
Then I should know its' value is nil
|
|
115
|
+
|
|
116
|
+
Scenario: Table Cell element methods
|
|
117
|
+
When I retrieve table cell
|
|
118
|
+
Then I should know it exists
|
|
119
|
+
And I should know it is visible
|
|
120
|
+
And I should know its' text includes "Data4"
|
|
121
|
+
And I should know it is equal to itself
|
|
122
|
+
And I should know its' tag name is "td"
|
|
123
|
+
And I should know the attribute "readonly" is false
|
|
124
|
+
And I should be able to click it
|
|
125
|
+
|
|
126
|
+
@watir_only
|
|
127
|
+
Scenario: Table Cell element methods in watir
|
|
128
|
+
When I retrieve table cell
|
|
129
|
+
Then I should know its' value is ""
|
|
130
|
+
|
|
131
|
+
@selenium_only
|
|
132
|
+
Scenario: Table Cell element methods in selenium
|
|
133
|
+
When I retrieve table cell
|
|
134
|
+
Then I should know its' value is nil
|
|
135
|
+
|
|
136
|
+
Scenario: Text Field element methods
|
|
137
|
+
When I retrieve a text field
|
|
138
|
+
Then I should know it exists
|
|
139
|
+
And I should know it is visible
|
|
140
|
+
And I should know its' text includes ""
|
|
141
|
+
And I should know its' value is ""
|
|
142
|
+
And I should know it is equal to itself
|
|
143
|
+
And I should know its' tag name is "input"
|
|
144
|
+
And I should know the attribute "readonly" is false
|
|
145
|
+
And I should be able to click it
|
|
146
|
+
|
|
147
|
+
Scenario: Text Area element methods
|
|
148
|
+
When I retrieve the text area
|
|
149
|
+
Then I should know it exists
|
|
150
|
+
And I should know it is visible
|
|
151
|
+
And I should know its' text includes ""
|
|
152
|
+
And I should know its' value is ""
|
|
153
|
+
And I should know it is equal to itself
|
|
154
|
+
And I should know its' tag name is "textarea"
|
|
155
|
+
And I should know the attribute "readonly" is false
|
|
156
|
+
And I should be able to click it
|
|
157
|
+
|
|
158
|
+
Scenario: Image element methods
|
|
159
|
+
When I get the image element
|
|
160
|
+
Then I should know it exists
|
|
161
|
+
And I should know it is visible
|
|
162
|
+
And I should know its' text includes ""
|
|
163
|
+
And I should know it is equal to itself
|
|
164
|
+
And I should know its' tag name is "img"
|
|
165
|
+
And I should know the attribute "readonly" is false
|
|
166
|
+
And I should be able to click it
|
|
167
|
+
|
|
168
|
+
@watir_only
|
|
169
|
+
Scenario: Image element methods in watir
|
|
170
|
+
When I get the image element
|
|
171
|
+
Then I should know its' value is ""
|
|
172
|
+
|
|
173
|
+
@selenium_only
|
|
174
|
+
Scenario: Image element methods in selenium
|
|
175
|
+
When I get the image element
|
|
176
|
+
Then I should know its' value is nil
|
|
177
|
+
|
|
178
|
+
Scenario: Hidden Field element methods
|
|
179
|
+
When I retrieve the hidden field element
|
|
180
|
+
Then I should know it exists
|
|
181
|
+
And I should know it is not visible
|
|
182
|
+
And I should know its' text includes ""
|
|
183
|
+
And I should know its' value is "12345"
|
|
184
|
+
And I should know it is equal to itself
|
|
185
|
+
And I should know its' tag name is "input"
|
|
186
|
+
And I should know the attribute "readonly" is false
|
|
187
|
+
|
|
188
|
+
Scenario: Form element methods
|
|
189
|
+
When I locate the form
|
|
190
|
+
Then I should know it exists
|
|
191
|
+
And I should know it is visible
|
|
192
|
+
And I should know its' text includes ""
|
|
193
|
+
And I should know it is equal to itself
|
|
194
|
+
And I should know its' tag name is "form"
|
|
195
|
+
And I should know the attribute "readonly" is false
|
|
196
|
+
|
|
197
|
+
@watir_only
|
|
198
|
+
Scenario: Form element methods in watir
|
|
199
|
+
When I locate the form
|
|
200
|
+
Then I should know its' value is ""
|
|
201
|
+
|
|
202
|
+
@selenium_only
|
|
203
|
+
Scenario: Form element methods in selenium
|
|
204
|
+
When I locate the form
|
|
205
|
+
Then I should know its' value is nil
|
|
206
|
+
|
|
207
|
+
Scenario: List item element methods
|
|
208
|
+
When I retrieve a list item element
|
|
209
|
+
Then I should know it exists
|
|
210
|
+
And I should know it is visible
|
|
211
|
+
And I should know its' text is "Item One"
|
|
212
|
+
And I should know it is equal to itself
|
|
213
|
+
And I should know its' tag name is "li"
|
|
214
|
+
And I should know the attribute "readonly" is false
|
|
215
|
+
And I should be able to click it
|
|
216
|
+
|
|
217
|
+
Scenario: Unordered list element methods
|
|
218
|
+
When I retrieve an unordered list element
|
|
219
|
+
Then I should know it exists
|
|
220
|
+
And I should know it is visible
|
|
221
|
+
And I should know its' text includes "Item One"
|
|
222
|
+
And I should know its' text includes "Item Two"
|
|
223
|
+
And I should know its' text includes "Item Three"
|
|
224
|
+
And I should know it is equal to itself
|
|
225
|
+
And I should know its' tag name is "ul"
|
|
226
|
+
And I should know the attribute "readonly" is false
|
|
227
|
+
And I should be able to click it
|
|
228
|
+
|
|
229
|
+
Scenario: Ordered list element methods
|
|
230
|
+
When I retrieve an ordered list element
|
|
231
|
+
Then I should know it exists
|
|
232
|
+
And I should know it is visible
|
|
233
|
+
And I should know its' text includes "Number One"
|
|
234
|
+
And I should know its' text includes "Number Two"
|
|
235
|
+
And I should know its' text includes "Number Three"
|
|
236
|
+
And I should know it is equal to itself
|
|
237
|
+
And I should know its' tag name is "ol"
|
|
238
|
+
And I should know the attribute "readonly" is false
|
|
239
|
+
And I should be able to click it
|
data/features/frames.feature
CHANGED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<html>
|
|
2
|
+
<head>
|
|
3
|
+
<title>modal dialog test page</title>
|
|
4
|
+
</head>
|
|
5
|
+
<body>
|
|
6
|
+
|
|
7
|
+
<script type="text/javascript">
|
|
8
|
+
function modal() {
|
|
9
|
+
var retValue = window.showModalDialog(
|
|
10
|
+
"modal_1.html", self,
|
|
11
|
+
"status:no;resizable:Yes;help:no;maximize:no;minimize:no;scrollbars:no;");
|
|
12
|
+
}
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<input id=launch_modal_button type=button onclick='return modal();' value="Launch a modal" />
|
|
16
|
+
</body>
|
|
17
|
+
</html>
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<html>
|
|
2
|
+
|
|
3
|
+
<head>
|
|
4
|
+
<title>Modal 1</title>
|
|
5
|
+
|
|
6
|
+
<script>
|
|
7
|
+
function delay_action(other_function) {
|
|
8
|
+
setTimeout(other_function, 3000);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
function close_window() {
|
|
12
|
+
window.returnValue = 22
|
|
13
|
+
window.close()
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function modal1() {
|
|
17
|
+
var retValue = window.showModalDialog(
|
|
18
|
+
"modal_2.html", self,
|
|
19
|
+
"status:no;resizable:Yes;help:no;maximize:no;minimize:no;scrollbars:no;");
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
</head>
|
|
25
|
+
|
|
26
|
+
<body>
|
|
27
|
+
|
|
28
|
+
<h2>Modal 1</h2>
|
|
29
|
+
|
|
30
|
+
<h3>Close buttons</h3>
|
|
31
|
+
<input id=close_window type=button onclick="close_window()" value="Close window"/>
|
|
32
|
+
<input id=delayed_close type=button onclick="delay_action('close_window()')" value="Close window with delay" />
|
|
33
|
+
|
|
34
|
+
<h3>Nested modal</h3>
|
|
35
|
+
<input id=launch_modal_button type=button onclick='return modal1();' value="Launch another modal"/>
|
|
36
|
+
|
|
37
|
+
</body>
|
|
38
|
+
</html>
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<html>
|
|
2
|
+
|
|
3
|
+
<head>
|
|
4
|
+
<title>Modal 2</title>
|
|
5
|
+
|
|
6
|
+
<script>
|
|
7
|
+
function delay_action(other_function) {
|
|
8
|
+
setTimeout(other_function, 3000);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
function close_window() {
|
|
12
|
+
self.close()
|
|
13
|
+
}
|
|
14
|
+
</script>
|
|
15
|
+
|
|
16
|
+
</head>
|
|
17
|
+
|
|
18
|
+
<body>
|
|
19
|
+
|
|
20
|
+
<h2>Modal 2</h2>
|
|
21
|
+
|
|
22
|
+
<h3>Close buttons</h3>
|
|
23
|
+
<input id=close_window2 type="button" onclick="close_window()" value="Close window"/>
|
|
24
|
+
<input id=delayed_close2 type=button onclick="delay_action('close_window()')" value="Close window with delay" />
|
|
25
|
+
|
|
26
|
+
</body>
|
|
27
|
+
</html>
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<html>
|
|
2
|
+
<head>
|
|
3
|
+
<title>Nested Elements</title>
|
|
4
|
+
</head>
|
|
5
|
+
<body>
|
|
6
|
+
<h1>Nested Elements</h1>
|
|
7
|
+
|
|
8
|
+
<div id="div_id">
|
|
9
|
+
<a href="success.html">Success</a>
|
|
10
|
+
<form method="get" action="success.html">
|
|
11
|
+
<input type="submit" value="Click Me">
|
|
12
|
+
</form>
|
|
13
|
+
<input size="40" type="text"/>
|
|
14
|
+
<input size="40" type="hidden" value="LeanDog"/>
|
|
15
|
+
<textarea rows="2" cols="20"></textarea>
|
|
16
|
+
<select>
|
|
17
|
+
<option value="option1">Test 1</option>
|
|
18
|
+
<option value="option2">Test 2</option>
|
|
19
|
+
</select>
|
|
20
|
+
<input type="checkbox" value="0"/>
|
|
21
|
+
<input type="radio" value="Milk">
|
|
22
|
+
<div>
|
|
23
|
+
page-object rocks!
|
|
24
|
+
</div>
|
|
25
|
+
<span>
|
|
26
|
+
My alert
|
|
27
|
+
</span>
|
|
28
|
+
<table>
|
|
29
|
+
<tr><td>Data1</td><td>Data2</td></tr>
|
|
30
|
+
</table>
|
|
31
|
+
<img src="images/circle.png">
|
|
32
|
+
<ol>
|
|
33
|
+
<li>Number One</li>
|
|
34
|
+
<li>Number Two</li>
|
|
35
|
+
</ol>
|
|
36
|
+
<ul>
|
|
37
|
+
<li>Item One</li>
|
|
38
|
+
<li>Item Two</li>
|
|
39
|
+
</ul>
|
|
40
|
+
</div>
|
|
41
|
+
</body>
|
|
42
|
+
</html>
|
|
@@ -94,6 +94,7 @@
|
|
|
94
94
|
<input id=alert_button type=button onclick="alert('I am an alert')" value=Alert>
|
|
95
95
|
<input id=confirm_button type=button onclick="this.value = confirm('set the value')" value=Confirm>
|
|
96
96
|
<input id=prompt_button type=button onclick='this.value = prompt("enter your name", "John Doe")' value=Prompt>
|
|
97
|
+
|
|
97
98
|
<h3>New Window</h3>
|
|
98
99
|
<a href="success.html" target="_blank">New Window</a>
|
|
99
100
|
</body>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
Feature: handing modal dialogs
|
|
2
|
+
|
|
3
|
+
Background:
|
|
4
|
+
Given I am on the modal page
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
Scenario: Interacting with a modal dialog
|
|
8
|
+
When I open a modal dialog
|
|
9
|
+
Then I should be able to close the modal
|
|
10
|
+
|
|
11
|
+
Scenario: Nested modal dialogs
|
|
12
|
+
When I open a modal dialog
|
|
13
|
+
And I open another modal dialog from that one
|
|
14
|
+
#Then I should be able to close both modals
|
|
15
|
+
|