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,35 @@
|
|
1
|
+
<htmL>
|
2
|
+
<head>
|
3
|
+
<title>Prototype - Sample App</title>
|
4
|
+
<script type="application/x-javascript" src="/prototype-1.6.0.3.js"></script>
|
5
|
+
</head>
|
6
|
+
<body>
|
7
|
+
<div id="ajax-demo">
|
8
|
+
<h2>AJAX Calculator</h2>
|
9
|
+
<form id="calculator-form" action="#" method="post" onSubmit="return false;">
|
10
|
+
<input id="calculator-expression" name="calculator-expression"/>
|
11
|
+
<input type="submit" id="calculator-button" value="Compute" />
|
12
|
+
<br/><br/>
|
13
|
+
<div>Result: <input id="calculator-result" disabled /></div>
|
14
|
+
</form>
|
15
|
+
|
16
|
+
<script type="text/javascript" language="javascript">
|
17
|
+
Event.observe(window, 'load', function() {
|
18
|
+
|
19
|
+
Event.observe('calculator-button', 'click', function (event) {
|
20
|
+
new Ajax.Request('/compute', {
|
21
|
+
method: 'post',
|
22
|
+
parameters: $('calculator-form').serialize(true),
|
23
|
+
onSuccess: function(transport) {
|
24
|
+
$('calculator-result').value = transport.responseText;
|
25
|
+
},
|
26
|
+
});
|
27
|
+
return false;
|
28
|
+
});
|
29
|
+
|
30
|
+
});
|
31
|
+
</script>
|
32
|
+
</div>
|
33
|
+
|
34
|
+
</body>
|
35
|
+
</html>
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rack'
|
3
|
+
require 'webrick'
|
4
|
+
|
5
|
+
|
6
|
+
class SampleApp
|
7
|
+
|
8
|
+
def self.start(host, port)
|
9
|
+
Rack::Handler::WEBrick.run new,
|
10
|
+
:Host => host,
|
11
|
+
:Port => port,
|
12
|
+
:Logger => ::WEBrick::Log.new(RUBY_PLATFORM =~ /mswin|mingw/ ? 'NUL:' : '/dev/null'),
|
13
|
+
:AccessLog => [nil, nil]
|
14
|
+
end
|
15
|
+
|
16
|
+
def initialize
|
17
|
+
@public = Rack::File.new(File.expand_path("../public", __FILE__))
|
18
|
+
end
|
19
|
+
|
20
|
+
def call(env)
|
21
|
+
req = Rack::Request.new(env)
|
22
|
+
|
23
|
+
case req.path
|
24
|
+
when "/"
|
25
|
+
[200, {}, ["Sample Application"]]
|
26
|
+
when "/compute"
|
27
|
+
sleep 3
|
28
|
+
resp = eval(req.params['calculator-expression']).to_s
|
29
|
+
[200, {}, [resp]]
|
30
|
+
else
|
31
|
+
@public.call(env)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
Feature: Select List
|
2
|
+
In order to interact with select lists
|
3
|
+
Testers will need access and interrogation ability
|
4
|
+
|
5
|
+
|
6
|
+
Background:
|
7
|
+
Given I am on the static elements page
|
8
|
+
|
9
|
+
Scenario: Selecting an element on the select list
|
10
|
+
When I select "Test 2" from the select list
|
11
|
+
Then the current item should be "Test 2"
|
12
|
+
|
13
|
+
Scenario: Selecting an element when there is a forward slash
|
14
|
+
When I select "Test/Test 3" from the select list
|
15
|
+
Then the current item should be "Test/Test 3"
|
16
|
+
|
17
|
+
Scenario Outline: Locating select lists on the Page
|
18
|
+
When I search for the select list by "<search_by>"
|
19
|
+
Then I should be able to select "Test 2"
|
20
|
+
And the value for the selected item should be "Test 2"
|
21
|
+
And the value for the option should be "option2"
|
22
|
+
|
23
|
+
Scenarios:
|
24
|
+
| search_by |
|
25
|
+
| id |
|
26
|
+
| class |
|
27
|
+
| name |
|
28
|
+
| xpath |
|
29
|
+
| index |
|
30
|
+
| label |
|
31
|
+
|
32
|
+
@selenium_only
|
33
|
+
Scenario Outline: Locating select lists on the Page using Selenium
|
34
|
+
When I search for the select list by "<search_by>"
|
35
|
+
Then I should be able to select "Test 2"
|
36
|
+
And the value for the selected item should be "Test 2"
|
37
|
+
And the value for the option should be "option2"
|
38
|
+
|
39
|
+
Examples:
|
40
|
+
| search_by |
|
41
|
+
| css |
|
42
|
+
|
43
|
+
Scenario Outline: Locating a select list using multiple parameters
|
44
|
+
When I search for the select list by "<param1>" and "<param2>"
|
45
|
+
Then I should be able to select "Test 2"
|
46
|
+
And the value for the selected item should be "Test 2"
|
47
|
+
And the value for the option should be "option2"
|
48
|
+
|
49
|
+
Scenarios:
|
50
|
+
| param1 | param2 |
|
51
|
+
| class | index |
|
52
|
+
| name | index |
|
53
|
+
|
54
|
+
Scenario: Iterating through the options in the select list
|
55
|
+
When I search for the select list by "id"
|
56
|
+
Then option "1" should contain "Test 1"
|
57
|
+
And option "2" should contain "Test 2"
|
58
|
+
And each option should contain "Test"
|
59
|
+
|
60
|
+
Scenario: Finding a select list dynamically
|
61
|
+
When I find a select list while the script is executing
|
62
|
+
Then I should see that the select list exists
|
63
|
+
And I should be able to select "Test 2" from the list
|
64
|
+
|
65
|
+
Scenario: Getting the selected option
|
66
|
+
When I select "Test 2" from the select list
|
67
|
+
Then the selected option should be "Test 2"
|
68
|
+
|
69
|
+
Scenario: Determining if a select list includes some option
|
70
|
+
Then the select list should include "Test 2"
|
71
|
+
|
72
|
+
Scenario: It should know if an option is selected
|
73
|
+
When I select "Test 2" from the select list
|
74
|
+
Then the select list should know that "Test 2" is selected
|
75
|
+
|
76
|
+
Scenario: Clearing multiple select list
|
77
|
+
When I clear multiple select list
|
78
|
+
Then multiple select list should have no selected options
|
79
|
+
|
80
|
+
Scenario: Selecting an option by its value
|
81
|
+
When I select an option using the value "option2"
|
82
|
+
Then the selected option should be "Test 2"
|
83
|
+
|
84
|
+
Scenario: Getting the value from a selected option
|
85
|
+
When I select an option using the value "option2"
|
86
|
+
Then the selected option should have a value of "option2"
|
@@ -0,0 +1,37 @@
|
|
1
|
+
Feature: Span
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given I am on the static elements page
|
5
|
+
|
6
|
+
Scenario: Getting the text from a span
|
7
|
+
When I get the text from the span
|
8
|
+
Then the text should be "My alert"
|
9
|
+
|
10
|
+
Scenario Outline: Locating spans on the page
|
11
|
+
When I search for the span by "<search_by>"
|
12
|
+
Then the text should be "My alert"
|
13
|
+
|
14
|
+
Scenarios:
|
15
|
+
| search_by |
|
16
|
+
| id |
|
17
|
+
| class |
|
18
|
+
| xpath |
|
19
|
+
| index |
|
20
|
+
| name |
|
21
|
+
| text |
|
22
|
+
| title |
|
23
|
+
| css |
|
24
|
+
|
25
|
+
Scenario Outline: Locating span using multiple parameters
|
26
|
+
When I search for the span by "<param1>" and "<param2>"
|
27
|
+
Then the text should be "My alert"
|
28
|
+
|
29
|
+
Scenarios:
|
30
|
+
| param1 | param2 |
|
31
|
+
| class | index |
|
32
|
+
| name | index |
|
33
|
+
|
34
|
+
Scenario: Finding a span dynamically
|
35
|
+
When I get the text from a span while the script is executing
|
36
|
+
Then I should see that the span exists
|
37
|
+
And the text should be "My alert"
|
@@ -0,0 +1,60 @@
|
|
1
|
+
Then /^the current item should be "([^\"]*)"$/ do |expected_text|
|
2
|
+
@page.sel_list_id.should == expected_text
|
3
|
+
end
|
4
|
+
|
5
|
+
Then /^the text should be "([^\"]*)"$/ do |expected_text|
|
6
|
+
@text.should == expected_text
|
7
|
+
end
|
8
|
+
|
9
|
+
Then /^I should be on the success page$/ do
|
10
|
+
@page.text.should include 'Success'
|
11
|
+
@page.title.should == 'Success'
|
12
|
+
end
|
13
|
+
|
14
|
+
Then /^the list items text should be "([^\"]*)"$/ do |expected_text|
|
15
|
+
@element.text.should == expected_text
|
16
|
+
end
|
17
|
+
|
18
|
+
When /^I get the first item from the list$/ do
|
19
|
+
@element = @list[0]
|
20
|
+
end
|
21
|
+
|
22
|
+
Then /^the table should have "([^\"]*)" rows$/ do |rows|
|
23
|
+
@element.rows.should == rows.to_i
|
24
|
+
end
|
25
|
+
|
26
|
+
Then /^each row should contain "([^\"]*)"$/ do |text|
|
27
|
+
@element.each do |row|
|
28
|
+
row.text.should include text
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
Then /^row "([^\"]*)" should have "([^\"]*)" columns$/ do |row, cols|
|
33
|
+
@element[row.to_i - 1].columns.should == cols.to_i
|
34
|
+
end
|
35
|
+
|
36
|
+
Then /^each column should contain "([^\"]*)"$/ do |text|
|
37
|
+
row = @element[0]
|
38
|
+
row.each do |column|
|
39
|
+
column.text.should include text
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
Then /^the list should contain (\d+) items$/ do |items|
|
44
|
+
@list.items.should == items.to_i
|
45
|
+
end
|
46
|
+
|
47
|
+
Then /^each item should contain "([^\"]*)"$/ do |text|
|
48
|
+
@list.each { |item| item.text.should include text }
|
49
|
+
end
|
50
|
+
|
51
|
+
Then /^option "([^\"]*)" should contain "([^\"]*)"$/ do |opt_num, text|
|
52
|
+
@element = @page.send "sel_list_#{@how}_element".to_sym
|
53
|
+
@element[opt_num.to_i - 1].text.should == text
|
54
|
+
end
|
55
|
+
|
56
|
+
Then /^each option should contain "([^\"]*)"$/ do |text|
|
57
|
+
@element.options.each do |option|
|
58
|
+
option.text.should include text
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
When /^I search for the area by "([^\"]*)"$/ do |how|
|
2
|
+
@how = how
|
3
|
+
end
|
4
|
+
|
5
|
+
Then /^I should be able to click the area$/ do
|
6
|
+
@page.send("area_#{@how}")
|
7
|
+
end
|
8
|
+
|
9
|
+
Then /^I should see the coordinates are "([^\"]*)"$/ do |coords|
|
10
|
+
@element.coords.should == coords
|
11
|
+
end
|
12
|
+
|
13
|
+
Then /^I should see the shape is "([^\"]*)"$/ do |shape|
|
14
|
+
@element.shape.should == shape
|
15
|
+
end
|
16
|
+
|
17
|
+
Then /^I should see the href is "([^\"]*)"$/ do |href|
|
18
|
+
@element.href.should include href
|
19
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
def success
|
2
|
+
|
3
|
+
end
|
4
|
+
|
5
|
+
Then /^I should be able to wait until it is present$/ do
|
6
|
+
@element.when_present do
|
7
|
+
success
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
Then /^I should be able to wait until it is visible$/ do
|
12
|
+
@element.when_visible do
|
13
|
+
success
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
Then /^I should be able to wait until it is not visible$/ do
|
18
|
+
begin
|
19
|
+
@element.when_not_visible do
|
20
|
+
fail
|
21
|
+
end
|
22
|
+
rescue
|
23
|
+
success
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
Then /^I should be able to wait until a block returns true$/ do
|
28
|
+
@element.wait_until do
|
29
|
+
@element.visible?
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
class AsyncPage
|
34
|
+
include PageObject
|
35
|
+
button(:target, :value => 'Target')
|
36
|
+
button(:hide, :value => 'Hide Button')
|
37
|
+
button(:unhide, :value => 'Unhide Button')
|
38
|
+
button(:create_button, :value => 'Create Button')
|
39
|
+
button(:remove_button, :value => 'Remove Button')
|
40
|
+
button(:created_button, :value => 'New Button')
|
41
|
+
end
|
42
|
+
|
43
|
+
Given /^I am on the async elements page$/ do
|
44
|
+
@page = AsyncPage.new(@browser)
|
45
|
+
@page.navigate_to(UrlHelper.async)
|
46
|
+
end
|
47
|
+
|
48
|
+
When /^I make the button invisible$/ do
|
49
|
+
@page.hide
|
50
|
+
sleep 2
|
51
|
+
end
|
52
|
+
|
53
|
+
Then /^I should be able to click it when it becomses visible$/ do
|
54
|
+
@page.unhide
|
55
|
+
@page.target_element.when_visible do
|
56
|
+
@page.target
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
Then /^I should be able to wait until the button becomes invisible$/ do
|
61
|
+
@page.hide
|
62
|
+
@page.target_element.when_not_visible do
|
63
|
+
@page.target_element.attribute("block").should == "none"
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
When /^I add a button a few seconds from now$/ do
|
68
|
+
@page.create_button
|
69
|
+
end
|
70
|
+
|
71
|
+
Then /^I should be able to click it when it gets added$/ do
|
72
|
+
@page.created_button_element.when_present.click
|
73
|
+
end
|
74
|
+
|
75
|
+
When /^I remove a button a few seconds from now$/ do
|
76
|
+
@page.created_button_element.when_present
|
77
|
+
@page.remove_button
|
78
|
+
end
|
79
|
+
|
80
|
+
Then /^I should not be able to find the button$/ do
|
81
|
+
@page.created_button_element.when_not_present
|
82
|
+
@page.created_button_element.exists?.should be_false
|
83
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
When /^I search for the audio element by "([^\"]*)"$/ do |how|
|
2
|
+
@element = @page.send "audio_#{how}_element"
|
3
|
+
end
|
4
|
+
|
5
|
+
When /^I search for the audio element by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
|
6
|
+
@element = @page.send "audio_#{param1}_#{param2}_element"
|
7
|
+
end
|
8
|
+
|
9
|
+
Then /^I should know the audio is not autoplay$/ do
|
10
|
+
@element.should_not be_autoplay
|
11
|
+
end
|
12
|
+
|
13
|
+
Then /^I should know that the controls are displayed$/ do
|
14
|
+
@element.should have_controls
|
15
|
+
end
|
16
|
+
|
17
|
+
Then /^I should know that the audio is paused$/ do
|
18
|
+
@element.should be_paused
|
19
|
+
end
|
20
|
+
|
21
|
+
Then /^I should know that the duration is greater than (\d+) seconds$/ do |duration|
|
22
|
+
@element.duration.should > duration.to_f
|
23
|
+
end
|
24
|
+
|
25
|
+
Then /^I should know that its volume is (\d+)$/ do |volume|
|
26
|
+
@element.volume.should == volume.to_i
|
27
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
When /^I click the button$/ do
|
2
|
+
@page.button_id
|
3
|
+
end
|
4
|
+
|
5
|
+
When /^I click the button with type image$/ do
|
6
|
+
@page.button_image_id
|
7
|
+
end
|
8
|
+
|
9
|
+
When /^I click the image button using src$/ do
|
10
|
+
@page.button_image_src
|
11
|
+
end
|
12
|
+
|
13
|
+
When /^I click the image button using alt$/ do
|
14
|
+
@page.button_image_alt
|
15
|
+
end
|
16
|
+
|
17
|
+
When /^I search for the button by "([^\"]*)"$/ do |how|
|
18
|
+
@how = how
|
19
|
+
end
|
20
|
+
|
21
|
+
When /^I search for the button by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
|
22
|
+
@how = "#{param1}_#{param2}"
|
23
|
+
end
|
24
|
+
|
25
|
+
Then /^I should be able to click the button$/ do
|
26
|
+
@page.send "button_#{@how}"
|
27
|
+
end
|
28
|
+
|
29
|
+
Then /^I should be able to click the real button$/ do
|
30
|
+
@page.send "btn_#{@how}"
|
31
|
+
end
|
32
|
+
|
33
|
+
When /^I find a button while the script is executing$/ do
|
34
|
+
@button = @page.button_element(:id => 'button_id')
|
35
|
+
end
|
36
|
+
|
37
|
+
Then /^I should be able to click the button element$/ do
|
38
|
+
@button.click
|
39
|
+
end
|
40
|
+
|
41
|
+
Then /^I should see that the button exists$/ do
|
42
|
+
@page.button_id?.should == true
|
43
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
When /^I search for the canvas by "([^\"]*)"$/ do |how|
|
2
|
+
@element = @page.send "canvas_#{how}_element"
|
3
|
+
end
|
4
|
+
|
5
|
+
Then /^I should see that the canvas width is "([^\"]*)"$/ do |width|
|
6
|
+
@element.width.should == width.to_i
|
7
|
+
end
|
8
|
+
|
9
|
+
Then /^I should see that the canvas height is "([^\"]*)"$/ do |height|
|
10
|
+
@element.height.should == height.to_i
|
11
|
+
end
|
12
|
+
|
13
|
+
When /^I search for the canvas element by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
|
14
|
+
@element = @page.send "canvas_#{param1}_#{param2}_element"
|
15
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
When /^I select the First check box$/ do
|
2
|
+
@page.check_cb_id
|
3
|
+
end
|
4
|
+
|
5
|
+
Then /^the First check box should be selected$/ do
|
6
|
+
@page.cb_id_checked?.should be_true
|
7
|
+
end
|
8
|
+
|
9
|
+
When /^I unselect the First check box$/ do
|
10
|
+
@page.uncheck_cb_id
|
11
|
+
end
|
12
|
+
|
13
|
+
Then /^the First check box should not be selected$/ do
|
14
|
+
@page.cb_id_checked?.should be_false
|
15
|
+
end
|
16
|
+
|
17
|
+
When /^I search for the check box by "([^\"]*)"$/ do |how|
|
18
|
+
@how = how
|
19
|
+
end
|
20
|
+
|
21
|
+
When /^I search for the check box by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
|
22
|
+
@how = "#{param1}_#{param2}"
|
23
|
+
end
|
24
|
+
|
25
|
+
Then /^I should be able to check the check box$/ do
|
26
|
+
@page.send "check_cb_#{@how}".to_sym
|
27
|
+
end
|
28
|
+
|
29
|
+
When /^I select the first check box while the script is executing$/ do
|
30
|
+
@page.checkbox_element(:id => 'cb_id').check
|
31
|
+
end
|
32
|
+
|
33
|
+
Then /^I should see that the checkbox exists$/ do
|
34
|
+
@page.button_id?.should == true
|
35
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
When /^I get the text from the div$/ do
|
2
|
+
@text = @page.div_id
|
3
|
+
end
|
4
|
+
|
5
|
+
When /^I search for the div by "([^\"]*)"$/ do |how|
|
6
|
+
@text = @page.send "div_#{how}".to_sym
|
7
|
+
end
|
8
|
+
|
9
|
+
When /^I search for the div by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
|
10
|
+
@text = @page.send "div_#{param1}_#{param2}".to_sym
|
11
|
+
end
|
12
|
+
|
13
|
+
When /^I get the text from a div while the script is executing$/ do
|
14
|
+
@text = @page.div_element(:id => 'div_id').text
|
15
|
+
end
|
16
|
+
|
17
|
+
Then /^I should see that the div exists$/ do
|
18
|
+
@page.div_id?.should == true
|
19
|
+
end
|