page_object 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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 +7 -0
- data/ChangeLog +809 -0
- data/Gemfile +14 -0
- data/Guardfile +20 -0
- data/LICENSE +20 -0
- data/README.md +111 -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/bold.feature +21 -0
- data/features/button.feature +98 -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 +55 -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 +207 -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 +117 -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 +492 -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/section.feature +132 -0
- data/features/select_list.feature +86 -0
- data/features/span.feature +37 -0
- data/features/step_definitions/accessor_steps.rb +64 -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/bold_steps.rb +12 -0
- data/features/step_definitions/button_steps.rb +48 -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 +163 -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 +541 -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/section_steps.rb +268 -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_row_steps.rb +23 -0
- data/features/step_definitions/table_steps.rb +70 -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 +382 -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 +122 -0
- data/features/table_cell.feature +45 -0
- data/features/table_row.feature +43 -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.rb +421 -0
- data/lib/page-object/accessors.rb +1412 -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.rb +60 -0
- data/lib/page-object/elements/area.rb +31 -0
- data/lib/page-object/elements/audio.rb +9 -0
- data/lib/page-object/elements/bold.rb +11 -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 +19 -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 +79 -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/indexed_properties.rb +40 -0
- data/lib/page-object/javascript/angularjs.rb +14 -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 +80 -0
- data/lib/page-object/loads_platform.rb +45 -0
- data/lib/page-object/locator_generator.rb +131 -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 +83 -0
- data/lib/page-object/platforms.rb +18 -0
- data/lib/page-object/platforms/selenium_webdriver.rb +30 -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/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 +1237 -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/watir_webdriver.rb +30 -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/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 +1082 -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/sections.rb +29 -0
- data/lib/page-object/version.rb +4 -0
- data/lib/page-object/widgets.rb +133 -0
- data/page_object.gemspec +31 -0
- data/pageobject.gems +1 -0
- data/spec/page-object/accessors_spec.rb +40 -0
- data/spec/page-object/element_locators_spec.rb +1122 -0
- data/spec/page-object/elements/area_spec.rb +45 -0
- data/spec/page-object/elements/bold_spec.rb +29 -0
- data/spec/page-object/elements/button_spec.rb +64 -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 +29 -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 +27 -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 +177 -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 +94 -0
- data/spec/page-object/elements/watir_element_spec.rb +145 -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 +407 -0
- data/spec/page-object/page_factory_spec.rb +238 -0
- data/spec/page-object/page_populator_spec.rb +122 -0
- data/spec/page-object/page_section_spec.rb +73 -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 +609 -0
- data/spec/page-object/watir_accessors_spec.rb +1134 -0
- data/spec/page-object/widget_spec.rb +226 -0
- data/spec/spec_helper.rb +47 -0
- metadata +601 -0
@@ -0,0 +1,40 @@
|
|
1
|
+
Feature: File Field
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given I am on the static elements page
|
5
|
+
|
6
|
+
Scenario: Setting the value on the file field
|
7
|
+
When I set the file field to the step definition file
|
8
|
+
Then its' value should equal that file
|
9
|
+
|
10
|
+
Scenario Outline: Locating file fields on the Page
|
11
|
+
When I search for the file field by "<search_by>"
|
12
|
+
Then I should be able to set the file field
|
13
|
+
|
14
|
+
Examples:
|
15
|
+
| search_by |
|
16
|
+
| id |
|
17
|
+
| class |
|
18
|
+
| name |
|
19
|
+
| xpath |
|
20
|
+
| title |
|
21
|
+
| index |
|
22
|
+
| label |
|
23
|
+
|
24
|
+
@selenium_only
|
25
|
+
Scenario Outline: Locating file fields on the Page
|
26
|
+
When I search for the file field by "<search_by>"
|
27
|
+
Then I should be able to set the file field
|
28
|
+
|
29
|
+
Scenarios:
|
30
|
+
| search_by |
|
31
|
+
| css |
|
32
|
+
|
33
|
+
Scenario Outline: Locating file fields using multiple parameters
|
34
|
+
When I search for the file field by "<param1>" and "<param2>"
|
35
|
+
Then I should be able to set the file field
|
36
|
+
|
37
|
+
Examples:
|
38
|
+
| param1 | param2 |
|
39
|
+
| class | index |
|
40
|
+
| name | index |
|
@@ -0,0 +1,43 @@
|
|
1
|
+
Feature: Form
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given I am on the static elements page
|
5
|
+
|
6
|
+
Scenario: Submitting a form
|
7
|
+
When I locate the form by "id"
|
8
|
+
Then I should be able to submit the form
|
9
|
+
|
10
|
+
Scenario Outline: Locating a form on the page
|
11
|
+
When I locate the form by "<search_by>"
|
12
|
+
Then I should be able to submit the form
|
13
|
+
|
14
|
+
Scenarios:
|
15
|
+
| search_by |
|
16
|
+
| id |
|
17
|
+
| class |
|
18
|
+
| xpath |
|
19
|
+
| index |
|
20
|
+
| action |
|
21
|
+
|
22
|
+
@selenium_only
|
23
|
+
Scenario Outline: Locating a form on the page
|
24
|
+
When I locate the form by "<search_by>"
|
25
|
+
Then I should be able to submit the form
|
26
|
+
|
27
|
+
Scenarios:
|
28
|
+
| search_by |
|
29
|
+
| css |
|
30
|
+
|
31
|
+
Scenario Outline: Locating table using multiple parameters
|
32
|
+
When I locate the form using "<param1>" and "<param2>"
|
33
|
+
Then I should be able to submit the form
|
34
|
+
|
35
|
+
Scenarios:
|
36
|
+
| param1 | param2 |
|
37
|
+
| class | index |
|
38
|
+
| name | index |
|
39
|
+
|
40
|
+
Scenario: Finding a form dynamically
|
41
|
+
When I locate a form while the script is executing
|
42
|
+
Then I should see that the form exists
|
43
|
+
And I should be able to submit the form
|
@@ -0,0 +1,75 @@
|
|
1
|
+
Feature: Handling frames
|
2
|
+
|
3
|
+
Scenario: Accessing elements within the frame
|
4
|
+
Given I am on the frame elements page
|
5
|
+
When I type "page-object" into the text field for frame 2 using "id"
|
6
|
+
Then I should verify "page-object" is in the text field for frame 2 using "id"
|
7
|
+
When I type "page-object" into the text field for frame 2 using "name"
|
8
|
+
Then I should verify "page-object" is in the text field for frame 2 using "name"
|
9
|
+
When I type "page-object" into the text field for frame 2 using "index"
|
10
|
+
Then I should verify "page-object" is in the text field for frame 2 using "index"
|
11
|
+
#And I should be able to get the text fields text from frame 2 using "index"
|
12
|
+
|
13
|
+
@watir_only
|
14
|
+
Scenario: Accessing elements within the frame using Regexp
|
15
|
+
Given I am on the frame elements page
|
16
|
+
When I type "page-object" into the text field for frame 2 using "regex"
|
17
|
+
Then I should verify "page-object" is in the text field for frame 2 using "regex"
|
18
|
+
|
19
|
+
@watir_only
|
20
|
+
Scenario: Accessing elements within the frame using multiple identifiers
|
21
|
+
Given I am on the iframe elements page
|
22
|
+
When I type "page-object" into the text field for frame 2 using "multiple identifiers"
|
23
|
+
Then I should verify "page-object" is in the text field for frame 2 using "multiple identifiers"
|
24
|
+
|
25
|
+
Scenario: Switching between frames
|
26
|
+
Given I am on the frame elements page
|
27
|
+
When I type "page-object" into the text field for frame 2 using "id"
|
28
|
+
And I type "page-object" into the text field from frame 1 using "id"
|
29
|
+
Then I should verify "page-object" is in the text field for frame 2 using "id"
|
30
|
+
And I should verify "page-object" is in the text field for frame 1 using "id"
|
31
|
+
|
32
|
+
Scenario: Accessing elements within the frame
|
33
|
+
Given I am on the iframe elements page
|
34
|
+
When I type "page-object" into the text field for frame 2 using "id"
|
35
|
+
Then I should verify "page-object" is in the text field for frame 2 using "id"
|
36
|
+
When I type "page-object" into the text field for frame 2 using "name"
|
37
|
+
Then I should verify "page-object" is in the text field for frame 2 using "name"
|
38
|
+
When I type "page-object" into the text field for frame 2 using "index"
|
39
|
+
Then I should verify "page-object" is in the text field for frame 2 using "index"
|
40
|
+
|
41
|
+
Scenario: Switching between frames
|
42
|
+
Given I am on the iframe elements page
|
43
|
+
When I type "page-object" into the text field for frame 2 using "id"
|
44
|
+
And I type "page-object" into the text field from frame 1 using "id"
|
45
|
+
Then I should verify "page-object" is in the text field for frame 2 using "id"
|
46
|
+
And I should verify "page-object" is in the text field for frame 1 using "id"
|
47
|
+
|
48
|
+
Scenario: Nested frames
|
49
|
+
Given I am on the nested frame elements page
|
50
|
+
Then I should be able to click the link in the frame
|
51
|
+
|
52
|
+
Scenario: Identifying items in frames at runtime
|
53
|
+
Given I am on the frame elements page
|
54
|
+
When I type "page-object" into the text field from frame 1 identified dynamically
|
55
|
+
Then I should verify "page-object" in the text field for frame 1 identified dynamically
|
56
|
+
|
57
|
+
Scenario: Identifying items in iframes at runtime
|
58
|
+
Given I am on the iframe elements page
|
59
|
+
When I type "page-object" into the text field from iframe 1 identified dynamically
|
60
|
+
Then I should verify "page-object" in the text field for iframe 1 identified dynamically
|
61
|
+
|
62
|
+
Scenario: Handling alerts inside frames
|
63
|
+
Given I am on the frame elements page
|
64
|
+
When I trigger an alert within a frame
|
65
|
+
Then I should be able to get the alert's message
|
66
|
+
|
67
|
+
Scenario: Handling confirms inside frames
|
68
|
+
Given I am on the frame elements page
|
69
|
+
When I trigger a confirm within a frame
|
70
|
+
Then I should be able to get the confirm message
|
71
|
+
|
72
|
+
Scenario: Handling prompts inside frames
|
73
|
+
Given I am on the frame elements page
|
74
|
+
When I trigger a prompt within a frame
|
75
|
+
Then I should be able to get the message and default value
|
@@ -0,0 +1,29 @@
|
|
1
|
+
Feature: Generic Elements
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given I am on the static elements page
|
5
|
+
|
6
|
+
Scenario: Getting the text from the article element
|
7
|
+
When I get the text from the article
|
8
|
+
Then the text should be "HTML 5 Article"
|
9
|
+
|
10
|
+
Scenario: Getting the text from the header element
|
11
|
+
When I get the text from the header
|
12
|
+
Then the text should be "HTML 5 Header"
|
13
|
+
|
14
|
+
Scenario: Getting the text from the footer element
|
15
|
+
When I get the text from the footer
|
16
|
+
Then the text should be "HTML 5 Footer"
|
17
|
+
|
18
|
+
Scenario: Getting the text from the summary element
|
19
|
+
When I get the text from the summary
|
20
|
+
Then the text should be "The summary"
|
21
|
+
|
22
|
+
Scenario: Getting the text from the details element
|
23
|
+
When I get the text from the details
|
24
|
+
Then the text should be "The summary The details"
|
25
|
+
|
26
|
+
Scenario: getting properties from a svg element
|
27
|
+
When I get the svg element
|
28
|
+
Then the svg width should be "100"
|
29
|
+
And the svg height should be "100"
|
@@ -0,0 +1,24 @@
|
|
1
|
+
Feature: Gxt Table Extension
|
2
|
+
As a Quality Engineer working on a Gxt or Gwt project
|
3
|
+
In order to easily create test widgets to interact with application widgets
|
4
|
+
I need to define, register and use widgets as if they were normal elements
|
5
|
+
|
6
|
+
Background:
|
7
|
+
Given I have defined a GxtTable class extending Table
|
8
|
+
And I have registered the GxtTable with PageObject
|
9
|
+
And I define a page-object using that widget
|
10
|
+
And I am on the Gxt Examples page
|
11
|
+
And I have the Basic Grid opened
|
12
|
+
|
13
|
+
Scenario: Retrieve a GxtTable
|
14
|
+
When I retrieve a GxtTable widget
|
15
|
+
Then I should know it is visible
|
16
|
+
|
17
|
+
@watir_only
|
18
|
+
Scenario: Determine if a GxtTable exists
|
19
|
+
When I retrieve a GxtTable widget
|
20
|
+
Then I should know it exists
|
21
|
+
|
22
|
+
Scenario: Confirm a correct row count from a GxtTable
|
23
|
+
When I retrieve a GxtTable widget
|
24
|
+
Then the GxtTable should have "13" rows
|
@@ -0,0 +1,97 @@
|
|
1
|
+
Feature: Headings
|
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 text for the "h1" element
|
8
|
+
Then I should see "h1's are cool"
|
9
|
+
When I get the text for the "h2" element
|
10
|
+
Then I should see "h2's are cool"
|
11
|
+
When I get the text for the "h3" element
|
12
|
+
Then I should see "h3's are cool"
|
13
|
+
When I get the text for the "h4" element
|
14
|
+
Then I should see "h4's are cool"
|
15
|
+
When I get the text for the "h5" element
|
16
|
+
Then I should see "h5's are cool"
|
17
|
+
When I get the text for the "h6" element
|
18
|
+
Then I should see "h6's are cool"
|
19
|
+
|
20
|
+
Scenario Outline: Locating h1s on the Page
|
21
|
+
When I search for the heading1 by "<search_by>"
|
22
|
+
Then I should see "h1's are cool"
|
23
|
+
|
24
|
+
Scenarios:
|
25
|
+
| search_by |
|
26
|
+
| id |
|
27
|
+
| class |
|
28
|
+
| name |
|
29
|
+
| xpath |
|
30
|
+
| index |
|
31
|
+
| css |
|
32
|
+
|
33
|
+
Scenario Outline: Locating h2s on the Page
|
34
|
+
When I search for the heading2 by "<search_by>"
|
35
|
+
Then I should see "h2's are cool"
|
36
|
+
|
37
|
+
Scenarios:
|
38
|
+
| search_by |
|
39
|
+
| id |
|
40
|
+
| class |
|
41
|
+
| name |
|
42
|
+
| xpath |
|
43
|
+
| index |
|
44
|
+
| css |
|
45
|
+
|
46
|
+
Scenario Outline: Locating h3s on the Page
|
47
|
+
When I search for the heading3 by "<search_by>"
|
48
|
+
Then I should see "h3's are cool"
|
49
|
+
|
50
|
+
Scenarios:
|
51
|
+
| search_by |
|
52
|
+
| id |
|
53
|
+
| class |
|
54
|
+
| name |
|
55
|
+
| xpath |
|
56
|
+
| index |
|
57
|
+
| css |
|
58
|
+
|
59
|
+
Scenario Outline: Locating h4s on the Page
|
60
|
+
When I search for the heading4 by "<search_by>"
|
61
|
+
Then I should see "h4's are cool"
|
62
|
+
|
63
|
+
Scenarios:
|
64
|
+
| search_by |
|
65
|
+
| id |
|
66
|
+
| class |
|
67
|
+
| name |
|
68
|
+
| xpath |
|
69
|
+
| index |
|
70
|
+
| css |
|
71
|
+
|
72
|
+
Scenario Outline: Locating h5s on the Page
|
73
|
+
When I search for the heading5 by "<search_by>"
|
74
|
+
Then I should see "h5's are cool"
|
75
|
+
|
76
|
+
Scenarios:
|
77
|
+
| search_by |
|
78
|
+
| id |
|
79
|
+
| class |
|
80
|
+
| name |
|
81
|
+
| xpath |
|
82
|
+
| index |
|
83
|
+
| css |
|
84
|
+
|
85
|
+
Scenario Outline: Locating h6s on the Page
|
86
|
+
When I search for the heading6 by "<search_by>"
|
87
|
+
Then I should see "h6's are cool"
|
88
|
+
|
89
|
+
Scenarios:
|
90
|
+
| search_by |
|
91
|
+
| id |
|
92
|
+
| class |
|
93
|
+
| name |
|
94
|
+
| xpath |
|
95
|
+
| index |
|
96
|
+
| css |
|
97
|
+
|
@@ -0,0 +1,45 @@
|
|
1
|
+
Feature: Hidden Fields
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given I am on the static elements page
|
5
|
+
|
6
|
+
Scenario: Setting and getting a value from a hidden field
|
7
|
+
When I retrieve the hidden field element
|
8
|
+
Then I should see the hidden field contains "12345"
|
9
|
+
|
10
|
+
Scenario Outline: Locating hidden fields on the Page
|
11
|
+
When I search for the hidden field by "<search_by>"
|
12
|
+
Then the hidden field element should contain "12345"
|
13
|
+
|
14
|
+
Scenarios:
|
15
|
+
| search_by |
|
16
|
+
| id |
|
17
|
+
| class |
|
18
|
+
| name |
|
19
|
+
| xpath |
|
20
|
+
| index |
|
21
|
+
| text |
|
22
|
+
| value |
|
23
|
+
|
24
|
+
@selenium_only
|
25
|
+
Scenario Outline: Locating hidden fields on the Page
|
26
|
+
When I search for the hidden field by "<search_by>"
|
27
|
+
Then the hidden field element should contain "12345"
|
28
|
+
|
29
|
+
Scenarios:
|
30
|
+
| search_by |
|
31
|
+
| css |
|
32
|
+
|
33
|
+
Scenario Outline: Locating a hidden field using multiple parameters
|
34
|
+
When I search for the hidden field by "<param1>" and "<param2>"
|
35
|
+
Then the hidden field element should contain "12345"
|
36
|
+
|
37
|
+
Scenarios:
|
38
|
+
| param1 | param2 |
|
39
|
+
| class | index |
|
40
|
+
| name | index |
|
41
|
+
|
42
|
+
Scenario: Finding a hidden field dynamically
|
43
|
+
When I find a hidden field while the script is executing
|
44
|
+
Then I should see that the hidden field exists
|
45
|
+
And the hidden field element should contain "12345"
|
Binary file
|
Binary file
|
@@ -0,0 +1,36 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<title>Async Page</title>
|
4
|
+
<script type="text/javascript">
|
5
|
+
function unhide() {
|
6
|
+
document.getElementById("target").style.display="block";
|
7
|
+
}
|
8
|
+
|
9
|
+
function hide() {
|
10
|
+
document.getElementById("target").style.display="none";
|
11
|
+
}
|
12
|
+
|
13
|
+
function addDiv() {
|
14
|
+
var button = document.createElement("input");
|
15
|
+
button.setAttribute("type", "button");
|
16
|
+
button.setAttribute("value", "New Button");
|
17
|
+
button.setAttribute("id", "new_button");
|
18
|
+
document.body.appendChild(button);
|
19
|
+
}
|
20
|
+
|
21
|
+
function removeDiv() {
|
22
|
+
var button = document.getElementById("new_button");
|
23
|
+
document.body.removeChild(button);
|
24
|
+
}
|
25
|
+
</script>
|
26
|
+
</head>
|
27
|
+
<body>
|
28
|
+
<input type="button" id="target" value="Target"/>
|
29
|
+
<input type="button" onclick="setTimeout(function() {hide();}, 2000);" value="Hide Button"/>
|
30
|
+
<input type="button" onclick="setTimeout(function() {unhide();}, 2000);" value="Unhide Button"/>
|
31
|
+
<input type="button" onclick="setTimeout(function() {addDiv();}, 2000);" value="Create Button"/>
|
32
|
+
<input type="button" onclick="setTimeout(function() {removeDiv();}, 2000);" value="Remove Button"/>
|
33
|
+
</body>
|
34
|
+
</html>
|
35
|
+
|
36
|
+
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<html>
|
2
|
+
<body>
|
3
|
+
<button ondblclick="change_text()">Double Click</button>
|
4
|
+
<p id="change_on_double_click">The double click has not occurred.</p>
|
5
|
+
</body>
|
6
|
+
|
7
|
+
<script>
|
8
|
+
function change_text()
|
9
|
+
{
|
10
|
+
document.getElementById("change_on_double_click").innerHTML="Double Click Received"
|
11
|
+
}
|
12
|
+
</script>
|
13
|
+
</html>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
2
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
3
|
+
<head>
|
4
|
+
<title>Frame 1</title>
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
6
|
+
</head>
|
7
|
+
<body onload="document.senderForm.senderElement.focus()">
|
8
|
+
<h1>Frame 1</h1>
|
9
|
+
<p>Nam accumsan. Donec nisi pede, interdum eget, ultrices ac, vulputate vitae, nunc. Nulla lorem. Duis cursus pharetra dolor. Nulla accumsan hendrerit leo. Vivamus commodo. Nullam dignissim adipiscing est. Aliquam vitae orci in risus lobortis luctus. Ut luctus fermentum ligula. Nullam ipsum. Suspendisse sit amet nisi.</p>
|
10
|
+
<form action="" method="post" name="senderForm">
|
11
|
+
<fieldset>
|
12
|
+
<input type="text" name="senderElement" id="senderElement" value="send_this_value" />
|
13
|
+
<input type="button" id="send" onclick="parent.frame2.document.recieverForm.recieverElement.value = document.senderForm.senderElement.value" value="Send!" />
|
14
|
+
</fieldset>
|
15
|
+
</form>
|
16
|
+
<div id="set_by_js" />
|
17
|
+
</body>
|
18
|
+
</html>
|