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,129 @@
|
|
1
|
+
class IndexedPropertyPage
|
2
|
+
include PageObject
|
3
|
+
|
4
|
+
indexed_property :table, [[:text_field, :text_table, {:id => 'table[%s].text'}],
|
5
|
+
[:text_field, :text_name, {:name => 'tableName[%s].text'}],
|
6
|
+
[:radio_button, :radio, {:id => 'table[%s].radio'}],
|
7
|
+
[:checkbox, :check, {:id => 'table[%s].check'}],
|
8
|
+
[:text_area, :area, {:id => 'table[%s].area'}],
|
9
|
+
[:button, :button, {:id => 'table[%s].button'}],
|
10
|
+
[:div, :content, {:id => 'table[%s].content'}]]
|
11
|
+
|
12
|
+
indexed_property :nottable, [[:text_field, :text_nottable, {:id => 'nottable[%s].text'}]]
|
13
|
+
|
14
|
+
indexed_property :other_table, [
|
15
|
+
[:text_field, :text_table, {:id => 'other_table[%s].text'}],
|
16
|
+
[:div, :content, {:id => 'other_table[%s].content'}]
|
17
|
+
]
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
def page
|
22
|
+
@page ||= IndexedPropertyPage.new(@browser)
|
23
|
+
end
|
24
|
+
|
25
|
+
Given /^I am on the indexed property page$/ do
|
26
|
+
# @page = IndexedPropertyPage.new(@browser)
|
27
|
+
page.navigate_to(UrlHelper.indexed)
|
28
|
+
end
|
29
|
+
|
30
|
+
When /^I search for the elements for index "([^\"]*)"$/ do |index|
|
31
|
+
@index = index
|
32
|
+
end
|
33
|
+
|
34
|
+
Then /^I type "([^\"]*)" into the table's indexed text field by id$/ do |val|
|
35
|
+
page.table[@index].text_table = val
|
36
|
+
end
|
37
|
+
|
38
|
+
Then /^The table's indexed text field by id should contain "([^\"]*)"$/ do |val|
|
39
|
+
page.table[@index].text_table.should == val
|
40
|
+
end
|
41
|
+
|
42
|
+
Then /^I type "([^\"]*)" into the table's indexed text field by name$/ do |val|
|
43
|
+
page.table[@index].text_name = val
|
44
|
+
end
|
45
|
+
|
46
|
+
Then /^The table's indexed text field by name should contain "([^\"]*)"$/ do |val|
|
47
|
+
page.table[@index].text_name.should == val
|
48
|
+
end
|
49
|
+
|
50
|
+
Then /^I select the indexed radio button$/ do
|
51
|
+
page.table[@index].select_radio
|
52
|
+
end
|
53
|
+
|
54
|
+
Then /^The indexed radio button should be selected$/ do
|
55
|
+
page.table[@index].radio_selected?.should == true
|
56
|
+
end
|
57
|
+
|
58
|
+
Then /^I check the indexed checkbox$/ do
|
59
|
+
page.table[@index].check_check
|
60
|
+
end
|
61
|
+
|
62
|
+
Then /^The indexed checkbox should be checked$/ do
|
63
|
+
page.table[@index].check_checked?.should == true
|
64
|
+
end
|
65
|
+
|
66
|
+
Then /^I type "([^\"]*)" into the table's indexed text area$/ do |val|
|
67
|
+
page.table[@index].area = val
|
68
|
+
end
|
69
|
+
|
70
|
+
Then /^The table's indexed text area should contain "([^\"]*)"$/ do |val|
|
71
|
+
page.table[@index].area.should == val
|
72
|
+
end
|
73
|
+
|
74
|
+
Then /^I should see that the indexed button exists$/ do
|
75
|
+
page.table[@index].button?.should == true
|
76
|
+
end
|
77
|
+
|
78
|
+
Then /^I should be able to click the indexed button$/ do
|
79
|
+
page.table[@index].button
|
80
|
+
end
|
81
|
+
|
82
|
+
Then /^I type "([^\"]*)" into the regular indexed text field by id$/ do |val|
|
83
|
+
page.nottable[@index].text_nottable = val
|
84
|
+
end
|
85
|
+
|
86
|
+
Then /^The regular indexed text field by id should contain "([^\"]*)"$/ do |val|
|
87
|
+
page.nottable[@index].text_nottable.should == val
|
88
|
+
end
|
89
|
+
|
90
|
+
|
91
|
+
When(/^I search for an element not on my indexed property but on another$/) do
|
92
|
+
@index = 'foo'
|
93
|
+
end
|
94
|
+
|
95
|
+
Then(/^I should see that the element doesn't exist$/) do
|
96
|
+
expect { page.other_table[@index].radio_element.value }.to raise_error(NoMethodError)
|
97
|
+
end
|
98
|
+
|
99
|
+
When(/^I search for an element that is on an indexed property$/) do
|
100
|
+
page.table['foo'].radio_element
|
101
|
+
end
|
102
|
+
|
103
|
+
And(/^I search for the element on another indexed property it is not on$/) do
|
104
|
+
@index = 'foo'
|
105
|
+
end
|
106
|
+
|
107
|
+
When(/^I search using the index which is not on another indexed property$/) do
|
108
|
+
@index = '123'
|
109
|
+
end
|
110
|
+
|
111
|
+
Then(/^I should see that the element doesn't exist for that index/) do
|
112
|
+
expect { page.other_table[@index].text_table_element.text }.to raise_error /unable to locate element|Selenium::WebDriver::Error::NoSuchElementError/
|
113
|
+
end
|
114
|
+
|
115
|
+
When(/^I search for an element by an index on an indexed property$/) do
|
116
|
+
page.table['123'].text_table_element.html
|
117
|
+
end
|
118
|
+
|
119
|
+
And(/^I search using an index which is on another indexed property$/) do
|
120
|
+
@index = 'bar'
|
121
|
+
end
|
122
|
+
|
123
|
+
Then(/^I should see the content of the element on the second indexed property$/) do
|
124
|
+
expect(page.other_table['bar'].content).to eq 'bar!'
|
125
|
+
end
|
126
|
+
|
127
|
+
When(/^I search for an element with text by an index on an indexed property$/) do
|
128
|
+
expect(page.table['123'].content).to eq '123!'
|
129
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
class JavascriptPage
|
2
|
+
include PageObject
|
3
|
+
|
4
|
+
text_field(:expression, :id => 'calculator-expression')
|
5
|
+
text_field(:results, :id => 'calculator-result')
|
6
|
+
button(:compute, :value => 'Compute')
|
7
|
+
|
8
|
+
end
|
9
|
+
|
10
|
+
def build_url(page)
|
11
|
+
target = ENV['BROWSER']
|
12
|
+
return "http://localhost:4567/#{page}" if target.nil? or target.include? 'local'
|
13
|
+
"http://ec2-107-22-131-88.compute-1.amazonaws.com:4567/#{page}"
|
14
|
+
end
|
15
|
+
|
16
|
+
Given /^I am on jQuery example page$/ do
|
17
|
+
PageObject.javascript_framework = :jquery
|
18
|
+
@page = JavascriptPage.new(@browser)
|
19
|
+
@page.navigate_to build_url("jquery.html")
|
20
|
+
end
|
21
|
+
|
22
|
+
Given /^I am on the Prototype example page$/ do
|
23
|
+
PageObject.javascript_framework = :prototype
|
24
|
+
@page = JavascriptPage.new(@browser)
|
25
|
+
@page.navigate_to build_url('prototype.html')
|
26
|
+
end
|
27
|
+
|
28
|
+
When /^I ask to compute "([^\"]*)"$/ do |expression|
|
29
|
+
@page.expression = expression
|
30
|
+
@page.compute
|
31
|
+
end
|
32
|
+
|
33
|
+
Then /^I should be able to wait for the answer "([^\"]*)"$/ do |answer|
|
34
|
+
@page.wait_for_ajax
|
35
|
+
@page.results.should == answer
|
36
|
+
end
|
37
|
+
|
38
|
+
Given /^I execute the javascript "([^\"]*)"$/ do |script|
|
39
|
+
@answer = @page.execute_script script
|
40
|
+
end
|
41
|
+
|
42
|
+
Given /^I execute the javascript "([^\"]*)" with an argument of "([^\"]*)"$/ do |script, arg|
|
43
|
+
@answer = @page.execute_script script, arg
|
44
|
+
end
|
45
|
+
|
46
|
+
Given /^I execute the javascript "([^\"]*)" with a text field argument$/ do |script|
|
47
|
+
text_field = @page.text_field_element(:id => 'text_field_id')
|
48
|
+
@page.execute_script(script, text_field)
|
49
|
+
end
|
50
|
+
|
51
|
+
Then /^I should get the answer "([^\"]*)"$/ do |answer|
|
52
|
+
@answer.should == answer.to_i
|
53
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
When /^I get the text from the label$/ do
|
2
|
+
@text = @page.label_id
|
3
|
+
end
|
4
|
+
|
5
|
+
When /^I search for the label by "([^\"]*)"$/ do |how|
|
6
|
+
@text = @page.send "label_#{how}".to_sym
|
7
|
+
end
|
8
|
+
|
9
|
+
When /^I search for the label by "(.*)" and "(.*)"$/ do |param1, param2|
|
10
|
+
@text = @page.send "label_#{param1}_#{param2}".to_sym
|
11
|
+
end
|
12
|
+
|
13
|
+
When /^I get the text from a label while the script is executing$/ do
|
14
|
+
@text = @page.label_element(:id => 'label_id').text
|
15
|
+
end
|
16
|
+
|
17
|
+
Then /^I should see that the label exists$/ do
|
18
|
+
@page.label_id?.should be_true
|
19
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
When /^I select the link labeled "([^\"]*)"$/ do |text|
|
2
|
+
@page.google_search_id
|
3
|
+
end
|
4
|
+
|
5
|
+
When /^I search for the link by "([^\"]*)"$/ do |how|
|
6
|
+
@how = how
|
7
|
+
end
|
8
|
+
|
9
|
+
Then /^I should be able to select the link$/ do
|
10
|
+
@page.send "google_search_#{@how}".to_sym
|
11
|
+
end
|
12
|
+
|
13
|
+
When /^I select a link labeled "([^"]*)" and index "([^"]*)"$/ do |label, index|
|
14
|
+
@page.send "#{label.downcase}#{index}".to_sym
|
15
|
+
end
|
16
|
+
|
17
|
+
When /^I select a link while the script is executing$/ do
|
18
|
+
link = @page.link_element(:id => 'link_id')
|
19
|
+
link.click
|
20
|
+
end
|
21
|
+
|
22
|
+
Then(/^I should see that the link exists$/) do
|
23
|
+
@page.link_id?.should == true
|
24
|
+
end
|
25
|
+
|
26
|
+
When(/^I get the href for the link$/) do
|
27
|
+
@href = @page.google_search_id_element.href
|
28
|
+
end
|
29
|
+
|
30
|
+
Then(/^I should know it was "(.*?)"$/) do |href|
|
31
|
+
@href.should include href
|
32
|
+
end
|
33
|
+
|
34
|
+
When(/^I get the link using the href success$/) do
|
35
|
+
@link = @page.link_element(:href => /succ.*html/)
|
36
|
+
end
|
37
|
+
|
38
|
+
Then(/^I should be able to click the link$/) do
|
39
|
+
@link.click
|
40
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
When /^I get the text from the list item$/ do
|
2
|
+
@text = @page.li_id
|
3
|
+
end
|
4
|
+
|
5
|
+
When /^I search for the list item by "([^\"]*)"$/ do |how|
|
6
|
+
@text = @page.send "li_#{how}"
|
7
|
+
end
|
8
|
+
|
9
|
+
When /^I search for the list item by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
|
10
|
+
@text = @page.send "li_#{param1}_#{param2}"
|
11
|
+
end
|
12
|
+
|
13
|
+
When /^I search for the list item while the script is executing$/ do
|
14
|
+
@text = @page.list_item_element(:id => 'li_id').text
|
15
|
+
end
|
16
|
+
|
17
|
+
Then /^I should see that the list item exists$/ do
|
18
|
+
@page.li_id?.should == true
|
19
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
class ModalPage
|
2
|
+
include PageObject
|
3
|
+
|
4
|
+
button(:launch_modal, :id => 'launch_modal_button')
|
5
|
+
end
|
6
|
+
|
7
|
+
class ModalDialog
|
8
|
+
include PageObject
|
9
|
+
|
10
|
+
button(:close_window, :id => 'close_window')
|
11
|
+
button(:close_window_with_delay, :id => 'delayed_close')
|
12
|
+
button(:launch_another_modal, :id => 'launch_modal_button')
|
13
|
+
end
|
14
|
+
|
15
|
+
class AnotherModalDialog
|
16
|
+
include PageObject
|
17
|
+
|
18
|
+
button(:close_window, :id => 'close_window2')
|
19
|
+
button(:close_window_with_delay, :id => 'delayed_close2')
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
Given /^I am on the modal page$/ do
|
24
|
+
ModalPage.new(@browser).navigate_to(UrlHelper.modal)
|
25
|
+
end
|
26
|
+
|
27
|
+
When /^I open a modal dialog$/ do
|
28
|
+
page = ModalPage.new(@browser)
|
29
|
+
page.modal_dialog do
|
30
|
+
page.launch_modal
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
Then /^I should be able to close the modal$/ do
|
35
|
+
dialog = ModalDialog.new(@browser)
|
36
|
+
dialog.attach_to_window(:title => 'Modal 1') do
|
37
|
+
dialog.close_window
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
When /^I open another modal dialog from that one$/ do
|
42
|
+
dialog = ModalDialog.new(@browser)
|
43
|
+
dialog.attach_to_window(:title => 'Modal 1') #do
|
44
|
+
dialog.modal_dialog #do
|
45
|
+
# dialog.launch_another_modal
|
46
|
+
# end
|
47
|
+
dialog.launch_another_modal
|
48
|
+
# end
|
49
|
+
end
|
50
|
+
|
51
|
+
Then /^I should be able to close both modals$/ do
|
52
|
+
pending
|
53
|
+
# another = AnotherModalDialog.new(@browser)
|
54
|
+
# another.attach_to_window(:title => 'Modal 2') do
|
55
|
+
# another.close_window
|
56
|
+
# end
|
57
|
+
|
58
|
+
# dialog = ModalDialog.new(@browser)
|
59
|
+
# dialog.attach_to_window(:title => 'Modal 1') do
|
60
|
+
# dialog.close_window
|
61
|
+
# end
|
62
|
+
end
|