meeane-page-object 0.1.8
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 +7 -0
- data/.gitignore +7 -0
- data/.rspec +2 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +10 -0
- data/ChangeLog +790 -0
- data/Gemfile +13 -0
- data/Guardfile +20 -0
- data/LICENSE +20 -0
- data/README.md +141 -0
- data/Rakefile +35 -0
- data/cucumber.yml +10 -0
- data/features/area.feature +35 -0
- data/features/async.feature +30 -0
- data/features/audio.feature +68 -0
- data/features/button.feature +87 -0
- data/features/canvas.feature +37 -0
- data/features/check_box.feature +55 -0
- data/features/div.feature +45 -0
- data/features/element.feature +322 -0
- data/features/file_field.feature +40 -0
- data/features/form.feature +43 -0
- data/features/frames.feature +75 -0
- data/features/generic_elements.feature +29 -0
- data/features/gxt_table_extension.feature +24 -0
- data/features/headings.feature +97 -0
- data/features/hidden_field.feature +45 -0
- data/features/html/04-Death_Becomes_Fur.mp4 +0 -0
- data/features/html/04-Death_Becomes_Fur.oga +0 -0
- data/features/html/async.html +36 -0
- data/features/html/double_click.html +13 -0
- data/features/html/failure.html +8 -0
- data/features/html/frame_1.html +18 -0
- data/features/html/frame_2.html +16 -0
- data/features/html/frame_3.html +14 -0
- data/features/html/frames.html +12 -0
- data/features/html/hover.html +12 -0
- data/features/html/iframes.html +12 -0
- data/features/html/images/circle.png +0 -0
- data/features/html/images/img_pulpit.jpg +0 -0
- data/features/html/images/submit.gif +0 -0
- data/features/html/indexed_property.html +52 -0
- 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/movie.mp4 +0 -0
- data/features/html/movie.ogg +0 -0
- data/features/html/multi_elements.html +144 -0
- data/features/html/nested_elements.html +77 -0
- data/features/html/nested_frame_1.html +1 -0
- data/features/html/nested_frame_2.html +11 -0
- data/features/html/nested_frame_3.html +14 -0
- data/features/html/nested_frames.html +10 -0
- data/features/html/planets.gif +0 -0
- data/features/html/static_elements.html +206 -0
- data/features/html/success.html +8 -0
- data/features/html/sun.gif +0 -0
- data/features/html/sun.html +7 -0
- data/features/image.feature +50 -0
- data/features/indexed_property.feature +98 -0
- data/features/javascript.feature +28 -0
- data/features/label.feature +46 -0
- data/features/link.feature +52 -0
- data/features/list_item.feature +36 -0
- data/features/modal_dialog.feature +15 -0
- data/features/multi_elements.feature +486 -0
- data/features/nested_elements.feature +117 -0
- data/features/ordered_list.feature +56 -0
- data/features/page_level_actions.feature +90 -0
- data/features/paragraph.feature +35 -0
- data/features/radio_button.feature +58 -0
- data/features/radio_button_group.feature +29 -0
- data/features/sample-app/public/jquery-1.3.2.js +4376 -0
- data/features/sample-app/public/jquery.html +30 -0
- data/features/sample-app/public/prototype-1.6.0.3.js +4320 -0
- data/features/sample-app/public/prototype.html +35 -0
- data/features/sample-app/sample_app.rb +35 -0
- data/features/select_list.feature +86 -0
- data/features/span.feature +37 -0
- data/features/step_definitions/accessor_steps.rb +60 -0
- data/features/step_definitions/area_steps.rb +19 -0
- data/features/step_definitions/async_steps.rb +83 -0
- data/features/step_definitions/audio_steps.rb +27 -0
- data/features/step_definitions/button_steps.rb +43 -0
- data/features/step_definitions/canvas_steps.rb +15 -0
- data/features/step_definitions/check_box_steps.rb +35 -0
- data/features/step_definitions/div_steps.rb +19 -0
- data/features/step_definitions/element_steps.rb +266 -0
- data/features/step_definitions/file_field_steps.rb +19 -0
- data/features/step_definitions/form_steps.rb +19 -0
- data/features/step_definitions/frames_steps.rb +159 -0
- data/features/step_definitions/generic_element_steps.rb +31 -0
- data/features/step_definitions/gxt_table_steps.rb +58 -0
- data/features/step_definitions/headings_steps.rb +12 -0
- data/features/step_definitions/hidden_field_steps.rb +27 -0
- data/features/step_definitions/image_steps.rb +27 -0
- data/features/step_definitions/indexed_property_steps.rb +129 -0
- data/features/step_definitions/javascript_steps.rb +53 -0
- data/features/step_definitions/label_steps.rb +19 -0
- data/features/step_definitions/link_steps.rb +40 -0
- data/features/step_definitions/list_item_steps.rb +19 -0
- data/features/step_definitions/modal_dialog_steps.rb +62 -0
- data/features/step_definitions/multi_elements_steps.rb +528 -0
- data/features/step_definitions/nested_elements_steps.rb +212 -0
- data/features/step_definitions/ordered_list_steps.rb +23 -0
- data/features/step_definitions/page_level_actions_steps.rb +135 -0
- data/features/step_definitions/page_traversal_steps.rb +4 -0
- data/features/step_definitions/paragraph_steps.rb +28 -0
- data/features/step_definitions/radio_button_group_steps.rb +36 -0
- data/features/step_definitions/radio_button_steps.rb +27 -0
- data/features/step_definitions/select_list_steps.rb +65 -0
- data/features/step_definitions/span_steps.rb +19 -0
- data/features/step_definitions/table_cell_steps.rb +15 -0
- data/features/step_definitions/table_steps.rb +66 -0
- data/features/step_definitions/text_area_steps.rb +35 -0
- data/features/step_definitions/text_field_steps.rb +35 -0
- data/features/step_definitions/unordered_list_steps.rb +23 -0
- data/features/step_definitions/video_steps.rb +45 -0
- data/features/support/ajax_text_environment.rb +26 -0
- data/features/support/env.rb +8 -0
- data/features/support/hooks.rb +8 -0
- data/features/support/page.rb +364 -0
- data/features/support/persistent_browser.rb +70 -0
- data/features/support/targets/firefox14_osx.rb +6 -0
- data/features/support/targets/firefox14_windows7.rb +6 -0
- data/features/support/url_helper.rb +57 -0
- data/features/table.feature +114 -0
- data/features/table_cell.feature +45 -0
- data/features/text_area.feature +51 -0
- data/features/text_field.feature +70 -0
- data/features/unordered_list.feature +56 -0
- data/features/video.feature +73 -0
- data/lib/page-object/accessors.rb +1313 -0
- data/lib/page-object/core_ext/string.rb +5 -0
- data/lib/page-object/element_locators.rb +21 -0
- data/lib/page-object/elements/area.rb +31 -0
- data/lib/page-object/elements/audio.rb +9 -0
- data/lib/page-object/elements/button.rb +35 -0
- data/lib/page-object/elements/canvas.rb +23 -0
- data/lib/page-object/elements/check_box.rb +37 -0
- data/lib/page-object/elements/div.rb +19 -0
- data/lib/page-object/elements/element.rb +226 -0
- data/lib/page-object/elements/file_field.rb +38 -0
- data/lib/page-object/elements/form.rb +36 -0
- data/lib/page-object/elements/heading.rb +15 -0
- data/lib/page-object/elements/hidden_field.rb +22 -0
- data/lib/page-object/elements/image.rb +36 -0
- data/lib/page-object/elements/label.rb +36 -0
- data/lib/page-object/elements/link.rb +46 -0
- data/lib/page-object/elements/list_item.rb +19 -0
- data/lib/page-object/elements/media.rb +45 -0
- data/lib/page-object/elements/option.rb +10 -0
- data/lib/page-object/elements/ordered_list.rb +50 -0
- data/lib/page-object/elements/paragraph.rb +9 -0
- data/lib/page-object/elements/radio_button.rb +37 -0
- data/lib/page-object/elements/select_list.rb +42 -0
- data/lib/page-object/elements/span.rb +19 -0
- data/lib/page-object/elements/table.rb +68 -0
- data/lib/page-object/elements/table_cell.rb +28 -0
- data/lib/page-object/elements/table_row.rb +50 -0
- data/lib/page-object/elements/text_area.rb +38 -0
- data/lib/page-object/elements/text_field.rb +42 -0
- data/lib/page-object/elements/unordered_list.rb +51 -0
- data/lib/page-object/elements/video.rb +18 -0
- data/lib/page-object/elements.rb +59 -0
- data/lib/page-object/indexed_properties.rb +36 -0
- data/lib/page-object/javascript/jquery.rb +14 -0
- data/lib/page-object/javascript/prototype.rb +14 -0
- data/lib/page-object/javascript/yui.rb +19 -0
- data/lib/page-object/javascript_framework_facade.rb +78 -0
- data/lib/page-object/loads_platform.rb +26 -0
- data/lib/page-object/locator_generator.rb +129 -0
- data/lib/page-object/nested_elements.rb +17 -0
- data/lib/page-object/page_factory.rb +108 -0
- data/lib/page-object/page_populator.rb +92 -0
- data/lib/page-object/platforms/selenium_webdriver/button.rb +15 -0
- data/lib/page-object/platforms/selenium_webdriver/check_box.rb +29 -0
- data/lib/page-object/platforms/selenium_webdriver/element.rb +291 -0
- data/lib/page-object/platforms/selenium_webdriver/file_field.rb +16 -0
- data/lib/page-object/platforms/selenium_webdriver/form.rb +16 -0
- data/lib/page-object/platforms/selenium_webdriver/image.rb +28 -0
- data/lib/page-object/platforms/selenium_webdriver/label.rb +17 -0
- data/lib/page-object/platforms/selenium_webdriver/link.rb +23 -0
- data/lib/page-object/platforms/selenium_webdriver/ordered_list.rb +39 -0
- data/lib/page-object/platforms/selenium_webdriver/page_object.rb +1136 -0
- data/lib/page-object/platforms/selenium_webdriver/radio_button.rb +22 -0
- data/lib/page-object/platforms/selenium_webdriver/select_list.rb +93 -0
- data/lib/page-object/platforms/selenium_webdriver/surrogate_selenium_element.rb +42 -0
- data/lib/page-object/platforms/selenium_webdriver/table.rb +42 -0
- data/lib/page-object/platforms/selenium_webdriver/table_row.rb +43 -0
- data/lib/page-object/platforms/selenium_webdriver/text_area.rb +17 -0
- data/lib/page-object/platforms/selenium_webdriver/text_field.rb +17 -0
- data/lib/page-object/platforms/selenium_webdriver/unordered_list.rb +39 -0
- data/lib/page-object/platforms/selenium_webdriver.rb +18 -0
- data/lib/page-object/platforms/watir_webdriver/check_box.rb +29 -0
- data/lib/page-object/platforms/watir_webdriver/element.rb +249 -0
- data/lib/page-object/platforms/watir_webdriver/file_field.rb +16 -0
- data/lib/page-object/platforms/watir_webdriver/form.rb +16 -0
- data/lib/page-object/platforms/watir_webdriver/image.rb +22 -0
- data/lib/page-object/platforms/watir_webdriver/label.rb +17 -0
- data/lib/page-object/platforms/watir_webdriver/link.rb +15 -0
- data/lib/page-object/platforms/watir_webdriver/ordered_list.rb +35 -0
- data/lib/page-object/platforms/watir_webdriver/page_object.rb +1029 -0
- data/lib/page-object/platforms/watir_webdriver/radio_button.rb +22 -0
- data/lib/page-object/platforms/watir_webdriver/select_list.rb +74 -0
- data/lib/page-object/platforms/watir_webdriver/table.rb +38 -0
- data/lib/page-object/platforms/watir_webdriver/table_row.rb +37 -0
- data/lib/page-object/platforms/watir_webdriver/text_area.rb +23 -0
- data/lib/page-object/platforms/watir_webdriver/text_field.rb +16 -0
- data/lib/page-object/platforms/watir_webdriver/unordered_list.rb +36 -0
- data/lib/page-object/platforms/watir_webdriver.rb +18 -0
- data/lib/page-object/platforms.rb +18 -0
- data/lib/page-object/version.rb +4 -0
- data/lib/page-object/widgets.rb +133 -0
- data/lib/page-object.rb +408 -0
- data/meeane-page-object.gemspec +32 -0
- data/pageobject.gems +1 -0
- data/spec/page-object/element_locators_spec.rb +1065 -0
- data/spec/page-object/elements/area_spec.rb +45 -0
- data/spec/page-object/elements/button_spec.rb +50 -0
- data/spec/page-object/elements/canvas_spec.rb +40 -0
- data/spec/page-object/elements/check_box_spec.rb +49 -0
- data/spec/page-object/elements/div_spec.rb +28 -0
- data/spec/page-object/elements/element_spec.rb +114 -0
- data/spec/page-object/elements/file_field_spec.rb +39 -0
- data/spec/page-object/elements/form_spec.rb +28 -0
- data/spec/page-object/elements/heading_spec.rb +48 -0
- data/spec/page-object/elements/hidden_field_spec.rb +28 -0
- data/spec/page-object/elements/image_spec.rb +66 -0
- data/spec/page-object/elements/label_spec.rb +29 -0
- data/spec/page-object/elements/link_spec.rb +49 -0
- data/spec/page-object/elements/list_item_spec.rb +28 -0
- data/spec/page-object/elements/nested_element_spec.rb +254 -0
- data/spec/page-object/elements/option_spec.rb +11 -0
- data/spec/page-object/elements/ordered_list_spec.rb +94 -0
- data/spec/page-object/elements/paragraph_spec.rb +28 -0
- data/spec/page-object/elements/select_list_spec.rb +142 -0
- data/spec/page-object/elements/selenium/radio_button_spec.rb +44 -0
- data/spec/page-object/elements/selenium/text_field_spec.rb +49 -0
- data/spec/page-object/elements/selenium_element_spec.rb +172 -0
- data/spec/page-object/elements/span_spec.rb +26 -0
- data/spec/page-object/elements/table_cell_spec.rb +21 -0
- data/spec/page-object/elements/table_row_spec.rb +70 -0
- data/spec/page-object/elements/table_spec.rb +98 -0
- data/spec/page-object/elements/text_area_spec.rb +39 -0
- data/spec/page-object/elements/unordered_list_spec.rb +95 -0
- data/spec/page-object/elements/watir_element_spec.rb +142 -0
- data/spec/page-object/javascript_framework_facade_spec.rb +61 -0
- data/spec/page-object/loads_platform_spec.rb +53 -0
- data/spec/page-object/page-object_spec.rb +405 -0
- data/spec/page-object/page_factory_spec.rb +256 -0
- data/spec/page-object/page_populator_spec.rb +122 -0
- data/spec/page-object/platforms/selenium_webdriver/selenium_page_object_spec.rb +68 -0
- data/spec/page-object/platforms/selenium_webdriver_spec.rb +29 -0
- data/spec/page-object/platforms/watir_webdriver/watir_page_object_spec.rb +29 -0
- data/spec/page-object/platforms/watir_webdriver_spec.rb +9 -0
- data/spec/page-object/selenium_accessors_spec.rb +589 -0
- data/spec/page-object/watir_accessors_spec.rb +1107 -0
- data/spec/page-object/widget_spec.rb +226 -0
- data/spec/spec_helper.rb +44 -0
- metadata +404 -0
@@ -0,0 +1,206 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<title>Static Elements Page</title>
|
4
|
+
</head>
|
5
|
+
<body>
|
6
|
+
<p id='p_id' name='p_name' class='p_class'>Static Elements Page</p>
|
7
|
+
|
8
|
+
<label for="text_field_id">Text Field</label>
|
9
|
+
<input id="text_field_id" name="text_field_name" class="text_field_class"
|
10
|
+
title="text_field_title" data-field="title" size="40" type="text"/>
|
11
|
+
|
12
|
+
<input id="hidden_field_id" name="hidden_field_name" class="hidden_field_class"
|
13
|
+
size="40" type="hidden" value="12345"/>
|
14
|
+
|
15
|
+
<label for="text_area_id">Text Area</label>
|
16
|
+
<textarea rows="2" cols="20" id="text_area_id" class="text_area_class" name="text_area_name"></textarea>
|
17
|
+
|
18
|
+
<label for="sel_list_id">Select List</label>
|
19
|
+
<select name="sel_list_name" id="sel_list_id" class="sel_list_class">
|
20
|
+
<option value="option1">Test 1</option>
|
21
|
+
<option value="option2">Test 2</option>
|
22
|
+
<option value="option3">Test/Test 3</option>
|
23
|
+
</select>
|
24
|
+
|
25
|
+
<select multiple="multiple" id="sel_list_multiple">
|
26
|
+
<option value="option1" selected="true">Test 1</option>
|
27
|
+
<option value="option2">Test 2</option>
|
28
|
+
<option value="option3" selected="true">Test 3</option>
|
29
|
+
</select>
|
30
|
+
|
31
|
+
<img src="planets.gif" width="145" height="126" alt="Planets" usemap="#planetmap"/>
|
32
|
+
<map id ="map" name="planetmap">
|
33
|
+
<area id="area" name="area" class="area" shape="rect" coords="0,0,82,126" href="sun.html"/>
|
34
|
+
<area shape="circle" coords="90,58,3" href="mercur.html"/>
|
35
|
+
<area shape="circle" coords="124,58,8" href="venus.html"/>
|
36
|
+
</map>
|
37
|
+
|
38
|
+
<canvas id="canvas" name="canvas" class="canvas" width="200" height="100"></canvas>
|
39
|
+
<script type="text/javascript">
|
40
|
+
var c=document.getElementById("myCanvas");
|
41
|
+
var ctx=c.getContext("2d");
|
42
|
+
ctx.fillStyle="#FF0000";
|
43
|
+
ctx.fillRect(0,0,150,75);
|
44
|
+
</script>
|
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
|
+
<svg width="100" height="100" id="the_svg">
|
61
|
+
<circle cx="50" cy="50" r="40" fill="red" stroke="blue" stroke-width="5" />
|
62
|
+
</svg>
|
63
|
+
|
64
|
+
<a href="success.html" id="link_id" name="link_name" class="link_class" title="link_title">Google Search</a>
|
65
|
+
|
66
|
+
<label for="cb_id">Checkbox</label>
|
67
|
+
<input id="cb_id" name="cb_name" class="cb_class" type="checkbox" value="1"/>
|
68
|
+
|
69
|
+
<label for="milk_id">Radio</label>
|
70
|
+
<input type="radio" id="milk_id" name="milk_name" class="milk_class" value="Milk"> Milk <br/>
|
71
|
+
<input type="radio" id="butter_id" name="butter_name" class="butter_class" value="Butter">Butter
|
72
|
+
|
73
|
+
<br/>
|
74
|
+
<label>Radio Button Group</label>
|
75
|
+
<input type="radio" name="fav_cheese" value="ched">Cheddar</input>
|
76
|
+
<input type="radio" name="fav_cheese" value="emmen">Emmental</input>
|
77
|
+
<input type="radio" name="fav_cheese" value="muen">Muenster</input>
|
78
|
+
<br/>
|
79
|
+
|
80
|
+
<div id="div_id" name="div_name" class="div_class" title="div_title">
|
81
|
+
page-object rocks!
|
82
|
+
</div>
|
83
|
+
<div data-entity="test">
|
84
|
+
found using data-entity
|
85
|
+
</div>
|
86
|
+
|
87
|
+
<span id="span_id" name="span_name" class="span_class" title="span_title">
|
88
|
+
My alert
|
89
|
+
</span>
|
90
|
+
|
91
|
+
<label id="label_id" name="label_name" class="label_class">
|
92
|
+
page-object is the best!
|
93
|
+
</label>
|
94
|
+
|
95
|
+
<table id='table_id' name='table_name' class='table_class' border='1'>
|
96
|
+
<thead>
|
97
|
+
<tr>
|
98
|
+
<th>Table</th>
|
99
|
+
<th>Header</th>
|
100
|
+
</tr>
|
101
|
+
</thead>
|
102
|
+
<tbody>
|
103
|
+
<tr>
|
104
|
+
<td>Data1</td>
|
105
|
+
<td>Data2</td>
|
106
|
+
</tr>
|
107
|
+
<tr>
|
108
|
+
<td>Data3</td>
|
109
|
+
<td id='cell_id' name='cell_name' class='cell_class'>Data4</td>
|
110
|
+
</tr>
|
111
|
+
</tbody>
|
112
|
+
</table>
|
113
|
+
|
114
|
+
<table id='table_with_thead_id' border='1'>
|
115
|
+
<thead>
|
116
|
+
<tr>
|
117
|
+
<th>Col1</th>
|
118
|
+
<th>Col2</th>
|
119
|
+
</tr>
|
120
|
+
</thead>
|
121
|
+
<tbody>
|
122
|
+
<tr>
|
123
|
+
<td>Data1</td>
|
124
|
+
<td>Data2</td>
|
125
|
+
</tr>
|
126
|
+
<tr>
|
127
|
+
<td>Data3</td>
|
128
|
+
<td>Data4</td>
|
129
|
+
</tr>
|
130
|
+
<tr>
|
131
|
+
<td>Data5</td>
|
132
|
+
</tr>
|
133
|
+
</tbody>
|
134
|
+
</table>
|
135
|
+
|
136
|
+
<form method="get" action="success.html">
|
137
|
+
<input id='button_id' name='button_name' class='button_class' type="submit" value="Click Me"/>
|
138
|
+
<input id='button_image_id' type='image' src='images/submit.gif' alt='Submit'/>
|
139
|
+
<button type='button' id='btn_id' name='btn_name' class='btn_class'>Click Me Too</button>
|
140
|
+
<input value="Disabled" disabled="true" type ="submit"/>
|
141
|
+
</form>
|
142
|
+
|
143
|
+
<img src="images/circle.png" id="image_id" name="image_name" class="image_class", alt="image_alt">
|
144
|
+
|
145
|
+
<form id="form_id" class="form_class" name="form_name" action="/">
|
146
|
+
</form>
|
147
|
+
|
148
|
+
<label for="file_field_id">File Field</label>
|
149
|
+
<input type="file" name="file_field_name" id="file_field_id" class="file_field_class" title="file_field_title" />
|
150
|
+
|
151
|
+
<ul id="ul_id" name="ul_name" class="ul_class">
|
152
|
+
<li id="li_id" name="li_name" class="li_class">Item One</li>
|
153
|
+
<li>Item Two</li>
|
154
|
+
<li>Item Three</li>
|
155
|
+
</ul>
|
156
|
+
|
157
|
+
<ol id="ol_id" name="ol_name" class="ol_class">
|
158
|
+
<li>Number One</li>
|
159
|
+
<li>Number Two</li>
|
160
|
+
<li>Number Three</li>
|
161
|
+
</ol>
|
162
|
+
|
163
|
+
<a href="success.html">Hello</a>
|
164
|
+
<a href="success.html">Hello</a>
|
165
|
+
<a href="success.html">Hello</a>
|
166
|
+
|
167
|
+
<input id=alert_button type=button onclick="alert('I am an alert')" value=Alert>
|
168
|
+
<input id=alert_button_that_reloads type=button onclick="alert('I am an alert'); location.reload()" value="Alert that Reloads">
|
169
|
+
<input id=confirm_button type=button onclick="this.value = confirm('set the value')" value=Confirm>
|
170
|
+
<input id=confirm_button_that_reloads type=button onclick="if(confirm('set the value')) location.reload()" value="Confirm that Reloads">
|
171
|
+
<input id=prompt_button type=button onclick='this.value = prompt("enter your name", "John Doe")' value=Prompt>
|
172
|
+
|
173
|
+
<h1 id="h1_id" class="h1_class" name="h1_name">h1's are cool</h1>
|
174
|
+
<h2 id="h2_id" class="h2_class" name="h2_name">h2's are cool</h2>
|
175
|
+
<h3 id="h3_id" class="h3_class" name="h3_name">h3's are cool</h3>
|
176
|
+
<h4 id="h4_id" class="h4_class" name="h4_name">h4's are cool</h4>
|
177
|
+
<h5 id="h5_id" class="h5_class" name="h5_name">h5's are cool</h5>
|
178
|
+
<h6 id="h6_id" class="h6_class" name="h6_name">h6's are cool</h6>
|
179
|
+
|
180
|
+
<a href="success.html" target="_blank">New Window</a>
|
181
|
+
<a href="failure.html" target="_blank">Another New Window</a>
|
182
|
+
|
183
|
+
<input type="text" id="onfocus_text_field" onfocus="document.getElementById('onfocus_test').innerHTML = 'changed by onfocus event'"/>
|
184
|
+
<div id="onfocus_test"></div>
|
185
|
+
|
186
|
+
<div id="parent_div">
|
187
|
+
<a href="success.html" id="child">Success</a>
|
188
|
+
</div>
|
189
|
+
|
190
|
+
<article id='article_id'>HTML 5 Article</article>
|
191
|
+
<header id='header_id'>HTML 5 Header</header>
|
192
|
+
<footer id='footer_id'>HTML 5 Footer</footer>
|
193
|
+
|
194
|
+
<details id='details_id'>
|
195
|
+
<summary id='summary_id'>The summary</summary>
|
196
|
+
The details
|
197
|
+
</details>
|
198
|
+
|
199
|
+
<figure id='figure_id'>
|
200
|
+
<img src="images/img_pulpit.jpg" alt="The Pulpit Rock" width="304" height="228">
|
201
|
+
</figure>
|
202
|
+
|
203
|
+
</body>
|
204
|
+
</html>
|
205
|
+
|
206
|
+
|
Binary file
|
@@ -0,0 +1,50 @@
|
|
1
|
+
Feature: Image
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given I am on the static elements page
|
5
|
+
|
6
|
+
Scenario: Getting the image element
|
7
|
+
When I get the image element
|
8
|
+
Then the image should be "106" pixels wide
|
9
|
+
And the image should be "106" pixels tall
|
10
|
+
|
11
|
+
Scenario Outline: Locating an image on the page
|
12
|
+
When I get the image element by "<search_by>"
|
13
|
+
Then the image should be "106" pixels wide
|
14
|
+
And the image should be "106" pixels tall
|
15
|
+
|
16
|
+
Scenarios:
|
17
|
+
| search_by |
|
18
|
+
| id |
|
19
|
+
| class |
|
20
|
+
| name |
|
21
|
+
| xpath |
|
22
|
+
| index |
|
23
|
+
| alt |
|
24
|
+
| src |
|
25
|
+
|
26
|
+
@selenium_only
|
27
|
+
Scenario Outline: Locating an image on the page
|
28
|
+
When I get the image element by "<search_by>"
|
29
|
+
Then the image should be "106" pixels wide
|
30
|
+
And the image should be "106" pixels tall
|
31
|
+
|
32
|
+
Scenarios:
|
33
|
+
| search_by |
|
34
|
+
| css |
|
35
|
+
|
36
|
+
Scenario Outline: Locating an image using multiple parameters
|
37
|
+
When I get the image element by "<param1>" and "<param2>"
|
38
|
+
Then the image should be "106" pixels wide
|
39
|
+
And the image should be "106" pixels tall
|
40
|
+
|
41
|
+
Scenarios:
|
42
|
+
| param1 | param2 |
|
43
|
+
| class | index |
|
44
|
+
| name | index |
|
45
|
+
|
46
|
+
Scenario: Finding an image dynamically
|
47
|
+
When I get the image element while the script is executing
|
48
|
+
Then I should see that the image exists
|
49
|
+
And the image should be "106" pixels wide
|
50
|
+
And the image should be "106" pixels tall
|
@@ -0,0 +1,98 @@
|
|
1
|
+
Feature: Indexed Property
|
2
|
+
In order to interact with recurring sequences of elements with an index
|
3
|
+
Testers will need access and interrogation ability
|
4
|
+
|
5
|
+
Background:
|
6
|
+
Given I am on the indexed property page
|
7
|
+
|
8
|
+
Scenario Outline: Locating indexed text fields in a table on the Page by id
|
9
|
+
When I search for the elements for index "<index>"
|
10
|
+
And I type "I found it" into the table's indexed text field by id
|
11
|
+
Then The table's indexed text field by id should contain "I found it"
|
12
|
+
|
13
|
+
Examples:
|
14
|
+
| index |
|
15
|
+
| foo |
|
16
|
+
| 123 |
|
17
|
+
| 12test |
|
18
|
+
|
19
|
+
Scenario Outline: Locating indexed text fields in a table on the Page by name
|
20
|
+
When I search for the elements for index "<index>"
|
21
|
+
And I type "I found it" into the table's indexed text field by name
|
22
|
+
Then The table's indexed text field by name should contain "I found it"
|
23
|
+
|
24
|
+
Examples:
|
25
|
+
| index |
|
26
|
+
| foo |
|
27
|
+
| 123 |
|
28
|
+
| 12test |
|
29
|
+
|
30
|
+
Scenario Outline: Locating indexed radio buttons in a table on the Page
|
31
|
+
When I search for the elements for index "<index>"
|
32
|
+
And I select the indexed radio button
|
33
|
+
Then The indexed radio button should be selected
|
34
|
+
|
35
|
+
Examples:
|
36
|
+
| index |
|
37
|
+
| foo |
|
38
|
+
| 123 |
|
39
|
+
| 12test |
|
40
|
+
|
41
|
+
Scenario Outline: Locating indexed checkboxes in a table on the Page
|
42
|
+
When I search for the elements for index "<index>"
|
43
|
+
And I check the indexed checkbox
|
44
|
+
Then The indexed checkbox should be checked
|
45
|
+
|
46
|
+
Examples:
|
47
|
+
| index |
|
48
|
+
| foo |
|
49
|
+
| 123 |
|
50
|
+
| 12test |
|
51
|
+
|
52
|
+
Scenario Outline: Locating indexed text areas in a table on the Page
|
53
|
+
When I search for the elements for index "<index>"
|
54
|
+
And I type "I found it" into the table's indexed text area
|
55
|
+
Then The table's indexed text area should contain "I found it"
|
56
|
+
|
57
|
+
Examples:
|
58
|
+
| index |
|
59
|
+
| foo |
|
60
|
+
| 123 |
|
61
|
+
| 12test |
|
62
|
+
|
63
|
+
Scenario Outline: Locating indexed buttons in a table on the Page
|
64
|
+
When I search for the elements for index "<index>"
|
65
|
+
Then I should see that the indexed button exists
|
66
|
+
And I should be able to click the indexed button
|
67
|
+
|
68
|
+
Examples:
|
69
|
+
| index |
|
70
|
+
| foo |
|
71
|
+
| 123 |
|
72
|
+
| 12test |
|
73
|
+
|
74
|
+
Scenario Outline: Locating indexed text fields outside a table on the Page
|
75
|
+
When I search for the elements for index "<index>"
|
76
|
+
And I type "I found it" into the regular indexed text field by id
|
77
|
+
Then The regular indexed text field by id should contain "I found it"
|
78
|
+
|
79
|
+
Examples:
|
80
|
+
| index |
|
81
|
+
| foo |
|
82
|
+
| 123 |
|
83
|
+
| 12test |
|
84
|
+
|
85
|
+
Scenario: Element on first indexed property but not second
|
86
|
+
When I search for an element that is on an indexed property
|
87
|
+
And I search for the element on another indexed property it is not on
|
88
|
+
Then I should see that the element doesn't exist
|
89
|
+
|
90
|
+
Scenario: Index on first indexed property but not on second
|
91
|
+
When I search for an element by an index on an indexed property
|
92
|
+
And I search using the index which is not on another indexed property
|
93
|
+
Then I should see that the element doesn't exist for that index
|
94
|
+
|
95
|
+
Scenario: Index on first indexed property and different on second
|
96
|
+
When I search for an element with text by an index on an indexed property
|
97
|
+
And I search using an index which is on another indexed property
|
98
|
+
Then I should see the content of the element on the second indexed property
|
@@ -0,0 +1,28 @@
|
|
1
|
+
Feature: Handling javascript events
|
2
|
+
|
3
|
+
Background:
|
4
|
+
|
5
|
+
Scenario: Waiting for ajax to complete with jQuery
|
6
|
+
Given I am on jQuery example page
|
7
|
+
When I ask to compute "2 + 2"
|
8
|
+
Then I should be able to wait for the answer "4"
|
9
|
+
|
10
|
+
Scenario: Waiting for ajax to complete with Prototype
|
11
|
+
Given I am on the Prototype example page
|
12
|
+
When I ask to compute "2 + 2"
|
13
|
+
Then I should be able to wait for the answer "4"
|
14
|
+
|
15
|
+
Scenario: Executing javascript in the browser
|
16
|
+
Given I am on the static elements page
|
17
|
+
Given I execute the javascript "return 2 + 2;"
|
18
|
+
Then I should get the answer "4"
|
19
|
+
|
20
|
+
Scenario: Executing javascript in the browser with value argument
|
21
|
+
Given I am on the static elements page
|
22
|
+
Given I execute the javascript "return 2 + Number(arguments[0]);" with an argument of "2"
|
23
|
+
Then I should get the answer "4"
|
24
|
+
|
25
|
+
Scenario: Executing javascript in the browser with element argument
|
26
|
+
Given I am on the static elements page
|
27
|
+
Given I execute the javascript "arguments[0].value = 'abcDEF';" with a text field argument
|
28
|
+
Then the text field should contain "abcDEF"
|
@@ -0,0 +1,46 @@
|
|
1
|
+
Feature: Handling labels with page object
|
2
|
+
|
3
|
+
In order to interact with labels,
|
4
|
+
Testers will need to access the element
|
5
|
+
and the ability to interrogate
|
6
|
+
|
7
|
+
Background:
|
8
|
+
Given I am on the static elements page
|
9
|
+
|
10
|
+
Scenario: Getting the text from a label
|
11
|
+
When I get the text from the label
|
12
|
+
Then the text should be "page-object is the best!"
|
13
|
+
|
14
|
+
Scenario: Getting the label element
|
15
|
+
When I retrieve the label element
|
16
|
+
Then I should know it exists
|
17
|
+
And I should know it is visible
|
18
|
+
|
19
|
+
Scenario Outline: Locating labels on the page
|
20
|
+
When I search for the label by "<search_by>"
|
21
|
+
Then the text should be "page-object is the best!"
|
22
|
+
|
23
|
+
Scenarios:
|
24
|
+
| search_by |
|
25
|
+
| id |
|
26
|
+
| class |
|
27
|
+
| xpath |
|
28
|
+
| index |
|
29
|
+
| name |
|
30
|
+
| text |
|
31
|
+
| css |
|
32
|
+
|
33
|
+
Scenario Outline: Locating labels using multiple parameters
|
34
|
+
When I search for the label by "<param1>" and "<param2>"
|
35
|
+
Then the text should be "page-object is the best!"
|
36
|
+
|
37
|
+
Scenarios:
|
38
|
+
| param1 | param2 |
|
39
|
+
| class | index |
|
40
|
+
| name | index |
|
41
|
+
|
42
|
+
Scenario: Finding a label dynamically
|
43
|
+
When I get the text from a label while the script is executing
|
44
|
+
Then I should see that the label exists
|
45
|
+
And the text should be "page-object is the best!"
|
46
|
+
|
@@ -0,0 +1,52 @@
|
|
1
|
+
Feature: Links
|
2
|
+
In order to interact with links
|
3
|
+
Testers will need access and interrogation ability
|
4
|
+
|
5
|
+
Background:
|
6
|
+
Given I am on the static elements page
|
7
|
+
|
8
|
+
Scenario: Selecting a link
|
9
|
+
When I select the link labeled "Google Search"
|
10
|
+
Then the page should contain the text "Success"
|
11
|
+
|
12
|
+
Scenario Outline: Locating links on the Page
|
13
|
+
When I search for the link by "<search_by>"
|
14
|
+
Then I should be able to select the link
|
15
|
+
|
16
|
+
Scenarios:
|
17
|
+
| search_by |
|
18
|
+
| id |
|
19
|
+
| class |
|
20
|
+
| name |
|
21
|
+
| xpath |
|
22
|
+
| link |
|
23
|
+
| link_text |
|
24
|
+
| text |
|
25
|
+
| index |
|
26
|
+
| href |
|
27
|
+
| css |
|
28
|
+
| title |
|
29
|
+
|
30
|
+
Scenario: Support for multiple parameters
|
31
|
+
When I select a link labeled "Hello" and index "0"
|
32
|
+
Then the page should contain the text "Success"
|
33
|
+
Given I am on the static elements page
|
34
|
+
When I select a link labeled "Hello" and index "1"
|
35
|
+
Then the page should contain the text "Success"
|
36
|
+
|
37
|
+
Scenario: Retrieve a Link
|
38
|
+
When I retrieve a link element
|
39
|
+
Then I should know it exists
|
40
|
+
And I should know it is visible
|
41
|
+
|
42
|
+
Scenario: Finding a link dynamically
|
43
|
+
When I select a link while the script is executing
|
44
|
+
And the page should contain the text "Success"
|
45
|
+
|
46
|
+
Scenario: Getting the href for a link
|
47
|
+
When I get the href for the link
|
48
|
+
Then I should know it was "success.html"
|
49
|
+
|
50
|
+
Scenario: Locating a link using a partial href
|
51
|
+
When I get the link using the href success
|
52
|
+
Then I should be able to click the link
|
@@ -0,0 +1,36 @@
|
|
1
|
+
Feature: List item
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given I am on the static elements page
|
5
|
+
|
6
|
+
Scenario: Getting the text from a list item
|
7
|
+
When I get the text from the list item
|
8
|
+
Then the text should be "Item One"
|
9
|
+
|
10
|
+
Scenario Outline: Locating list items on the page
|
11
|
+
When I search for the list item by "<search_by>"
|
12
|
+
Then the text should be "Item One"
|
13
|
+
|
14
|
+
Scenarios:
|
15
|
+
| search_by |
|
16
|
+
| id |
|
17
|
+
| class |
|
18
|
+
| xpath |
|
19
|
+
| index |
|
20
|
+
| name |
|
21
|
+
| text |
|
22
|
+
| css |
|
23
|
+
|
24
|
+
Scenario Outline: Locating list items using multiple parameters
|
25
|
+
When I search for the list item by "<param1>" and "<param2>"
|
26
|
+
Then the text should be "Item One"
|
27
|
+
|
28
|
+
Scenarios:
|
29
|
+
| param1 | param2 |
|
30
|
+
| class | index |
|
31
|
+
| name | index |
|
32
|
+
|
33
|
+
Scenario: Finding a list item dynamically
|
34
|
+
When I search for the list item while the script is executing
|
35
|
+
Then I should see that the list item exists
|
36
|
+
And the text should be "Item One"
|
@@ -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
|
+
|