druid-ts 0.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +5 -0
- data/.rspec +1 -0
- data/.rvmrc +1 -0
- data/.travis.yml +1 -2
- data/ChangeLog +218 -0
- data/Gemfile +2 -1
- data/README.md +64 -7
- data/Rakefile +1 -1
- data/druid.gemspec +25 -0
- data/features/async.feature +18 -0
- data/features/button.feature +42 -1
- data/features/checkbox.feature +7 -1
- data/features/div.feature +6 -0
- data/features/element.feature +100 -0
- data/features/file_field.feature +35 -0
- data/features/form.feature +12 -6
- data/features/frames.feature +57 -0
- data/features/heading.feature +164 -0
- data/features/hidden_field.feature +6 -0
- data/features/html/async.html +18 -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/iframes.html +12 -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/nested_elements.html +52 -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/static_elements.html +29 -23
- data/features/image.feature +8 -0
- data/features/link.feature +5 -0
- data/features/list_item.feature +5 -0
- data/features/modal_dialog.feature +9 -0
- data/features/nested_elements.feature +105 -0
- data/features/ordered_list.feature +6 -0
- data/features/page_level_actions.feature +48 -0
- data/features/paragraph.feature +33 -0
- data/features/radio_button.feature +6 -0
- data/features/select_list.feature +6 -1
- data/features/span.feature +6 -1
- data/features/step_definations/async_steps.rb +63 -0
- data/features/step_definations/button_steps.rb +25 -1
- data/features/step_definations/checkbox_steps.rb +5 -1
- data/features/step_definations/div_steps.rb +6 -1
- data/features/step_definations/element_steps.rb +55 -1
- data/features/step_definations/file_field_steps.rb +27 -0
- data/features/step_definations/form_steps.rb +8 -0
- data/features/step_definations/frame_steps.rb +112 -0
- data/features/step_definations/heading_steps.rb +39 -0
- data/features/step_definations/hidden_field_steps.rb +7 -3
- data/features/step_definations/image_steps.rb +7 -3
- data/features/step_definations/link_steps.rb +8 -3
- data/features/step_definations/list_item_steps.rb +9 -1
- data/features/step_definations/modal_dialog_steps.rb +38 -0
- data/features/step_definations/nested_elements_steps.rb +196 -0
- data/features/step_definations/ordered_list_steps.rb +11 -3
- data/features/step_definations/page_level_actions_steps.rb +72 -0
- data/features/step_definations/paragraph_steps.rb +15 -0
- data/features/step_definations/radio_button_steps.rb +5 -1
- data/features/step_definations/select_list_steps.rb +10 -2
- data/features/step_definations/span_steps.rb +5 -1
- data/features/step_definations/table_cell_steps.rb +5 -1
- data/features/step_definations/table_steps.rb +17 -3
- data/features/step_definations/text_area_steps.rb +18 -2
- data/features/step_definations/text_field_steps.rb +9 -1
- data/features/step_definations/unordered_list_steps.rb +11 -3
- data/features/support/env.rb +0 -15
- data/features/support/hooks.rb +7 -0
- data/features/support/page.rb +98 -1
- data/features/support/persistent_browser.rb +15 -0
- data/features/support/url_helper.rb +24 -1
- data/features/table.feature +7 -0
- data/features/table_cell.feature +6 -0
- data/features/text_area.feature +11 -0
- data/features/text_field.feature +6 -1
- data/features/unordered_list.feature +6 -0
- data/lib/druid.rb +251 -3
- data/lib/druid/accessors.rb +446 -158
- data/lib/druid/assist.rb +394 -0
- data/lib/druid/core_ext/string.rb +5 -0
- data/lib/druid/element_locators.rb +405 -0
- data/lib/druid/elements.rb +28 -0
- data/lib/druid/elements/button.rb +6 -1
- data/lib/druid/elements/check_box.rb +26 -0
- data/lib/druid/elements/div.rb +3 -1
- data/lib/druid/elements/element.rb +170 -5
- data/lib/druid/elements/file_field.rb +18 -0
- data/lib/druid/elements/form.rb +11 -0
- data/lib/druid/elements/heading.rb +14 -0
- data/lib/druid/elements/hidden_field.rb +12 -2
- data/lib/druid/elements/image.rb +13 -0
- data/lib/druid/elements/link.rb +2 -0
- data/lib/druid/elements/list_item.rb +3 -1
- data/lib/druid/elements/option.rb +9 -0
- data/lib/druid/elements/ordered_list.rb +4 -5
- data/lib/druid/elements/paragraph.rb +9 -0
- data/lib/druid/elements/radio_button.rb +25 -0
- data/lib/druid/elements/select_list.rb +10 -1
- data/lib/druid/elements/span.rb +3 -1
- data/lib/druid/elements/table.rb +20 -1
- data/lib/druid/elements/table_cell.rb +7 -0
- data/lib/druid/elements/table_row.rb +5 -1
- data/lib/druid/elements/text_area.rb +15 -1
- data/lib/druid/elements/text_field.rb +11 -1
- data/lib/druid/elements/unordered_list.rb +5 -5
- data/lib/druid/nested_elements.rb +103 -0
- data/lib/druid/page_factory.rb +4 -4
- data/lib/druid/page_populator.rb +71 -0
- data/spec/druid/accessors_spec.rb +789 -0
- data/spec/druid/druid_spec.rb +130 -7
- data/spec/druid/element_locators_spec.rb +160 -0
- data/spec/druid/elements/button_spec.rb +31 -0
- data/spec/druid/elements/check_box_spec.rb +38 -0
- data/spec/druid/elements/div_spec.rb +19 -0
- data/spec/druid/elements/element_spec.rb +150 -0
- data/spec/druid/elements/file_field_spec.rb +27 -0
- data/spec/druid/elements/form_spec.rb +27 -0
- data/spec/druid/elements/heading_spec.rb +39 -0
- data/spec/druid/elements/hidden_field_spec.rb +24 -0
- data/spec/druid/elements/image_spec.rb +32 -0
- data/spec/druid/elements/link_spec.rb +26 -0
- data/spec/druid/elements/list_item_spec.rb +19 -0
- data/spec/druid/elements/option_spec.rb +10 -0
- data/spec/druid/elements/ordered_list_spec.rb +42 -0
- data/spec/druid/elements/page_factory_spec.rb +40 -0
- data/spec/druid/elements/paragraph_spec.rb +21 -0
- data/spec/druid/elements/radio_button_spec.rb +38 -0
- data/spec/druid/elements/select_list_spec.rb +37 -0
- data/spec/druid/elements/span_spec.rb +19 -0
- data/spec/druid/elements/table_cell_spec.rb +23 -0
- data/spec/druid/elements/table_row_spec.rb +41 -0
- data/spec/druid/elements/table_spec.rb +52 -0
- data/spec/druid/elements/text_area_spec.rb +31 -0
- data/spec/druid/elements/text_field_spec.rb +31 -0
- data/spec/druid/elements/unordered_list_spec.rb +42 -0
- data/spec/druid/nested_element_spec.rb +128 -0
- data/spec/druid/page_populator_spec.rb +92 -0
- data/spec/spec_helper.rb +2 -1
- metadata +147 -27
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
When(/^I set the file field to the step definition file$/) do
|
|
2
|
+
@page.file_field_id = __FILE__
|
|
3
|
+
end
|
|
4
|
+
|
|
5
|
+
Then(/^This filefield element should exist$/) do
|
|
6
|
+
expect(@page.file_field_id_element.exist?).to be true
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
When(/^I search for the file field by "([^"]*)"$/) do |how|
|
|
10
|
+
@how = how
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
Then(/^I should be able to set the file field$/) do
|
|
14
|
+
@page.send "file_field_#{@how}=", __FILE__
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
When(/^I search for the file field by "([^"]*)" and "([^"]*)"$/) do |param1, param2|
|
|
18
|
+
@how = "#{param1}_#{param2}"
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
When(/^I locate a file field while the script is executing$/) do
|
|
22
|
+
@element = @page.file_field_element(:id => 'file_field_id')
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
Then(/^The file field should exist$/) do
|
|
26
|
+
expect(@element.exist?).to be true
|
|
27
|
+
end
|
|
@@ -9,3 +9,11 @@ end
|
|
|
9
9
|
When(/^I locate the form using "(.*?)" and "(.*?)"$/) do |param1, param2|
|
|
10
10
|
@element = @page.send "form_#{param1}_#{param2}_form"
|
|
11
11
|
end
|
|
12
|
+
|
|
13
|
+
When(/^I locate the form$/) do
|
|
14
|
+
@element = @page.form_id_element
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
When(/^I locate a form while the script is executing$/) do
|
|
18
|
+
@element = @page.form_element(:id => 'form_id')
|
|
19
|
+
end
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
class FramePage
|
|
2
|
+
include Druid
|
|
3
|
+
|
|
4
|
+
in_frame(:id => "frame_2") do |frame|
|
|
5
|
+
text_field(:text_field_2_id, :name => 'recieverElement', :frame => frame)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
in_frame(:name => "frame2") do |frame|
|
|
9
|
+
text_field(:text_field_2_name, :name => 'recieverElement', :frame => frame)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
in_frame(:index => 1) do |frame|
|
|
13
|
+
text_field(:text_field_2_index, :name => 'recieverElement', :frame => frame)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
in_frame(:id => "frame_1") do |frame|
|
|
17
|
+
text_field(:text_field_1_id, :name => 'senderElement', :frame => frame)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
in_frame(:name => "frame1") do |frame|
|
|
21
|
+
text_field(:text_field_1_name, :name => 'senderElement', :frame => frame)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
in_frame(:index => 0) do |frame|
|
|
25
|
+
text_field(:text_field_1_index, :name => 'senderElement', :frame => frame)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
Given(/^I am on the frame elements page$/) do
|
|
31
|
+
@page = FramePage.new(@driver)
|
|
32
|
+
@page.navigate_to(UrlHelper.frame_elements)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
When(/^I type "(.*?)" into the text field for frame 2 using "(.*?)"$/) do |text, arg_type|
|
|
36
|
+
@page.send "text_field_2_#{arg_type}=".to_sym, text
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
Then(/^I should verify "(.*?)" is in the text field for frame 2 using "(.*?)"$/) do |text, arg_type|
|
|
40
|
+
result = @page.send "text_field_2_#{arg_type}".to_sym
|
|
41
|
+
expect(result).to eql text
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
When(/^I type "(.*?)" into the text field from frame 1 using "(.*?)"$/) do |text, arg_type|
|
|
45
|
+
@page.send "text_field_1_#{arg_type}=".to_sym, text
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
Then(/^I should verify "(.*?)" is in the text field for frame 1 using "(.*?)"$/) do |text, arg_type|
|
|
49
|
+
result = @page.send "text_field_1_#{arg_type}".to_sym
|
|
50
|
+
expect(result).to eql text
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
Given(/^I am on the iframe elements page$/) do
|
|
54
|
+
@page = FramePage.new(@driver)
|
|
55
|
+
@page.navigate_to(UrlHelper.frame_elements)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
class NestedFramePage
|
|
59
|
+
include Druid
|
|
60
|
+
|
|
61
|
+
in_frame(:id => 'two') do |frame|
|
|
62
|
+
in_iframe({:id => 'three'}, frame) do |nested_frame|
|
|
63
|
+
link(:nested_link, :id => 'four', :frame => nested_frame)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
Given(/^I am on the nested frame elements page$/) do
|
|
69
|
+
@page = NestedFramePage.new(@driver)
|
|
70
|
+
@page.navigate_to(UrlHelper.nested_frame_elements)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
Then(/^I should be able to click the link in the frame$/) do
|
|
74
|
+
@page.nested_link
|
|
75
|
+
expect(@page.text).to include 'Success'
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
When(/^I type "([^"]*)" into the text field from frame 1 identified dynamically$/) do |value|
|
|
79
|
+
@page.in_frame(:id => 'frame_1') do |frame|
|
|
80
|
+
@page.text_field_element(:name => 'senderElement', :frame => frame).value = value
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
Then(/^I should verify "([^"]*)" in the text field for frame 1 identified dynamically$/) do |value|
|
|
85
|
+
@page.in_frame(:id => 'frame_1') do |frame|
|
|
86
|
+
expect(@page.text_field_element(:name => 'senderElement', :frame => frame).value).to eql value
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
When(/^I trigger an alert within a frame$/) do
|
|
91
|
+
@page.in_frame(:id => 'frame_3') do |frame|
|
|
92
|
+
@msg = @page.alert do
|
|
93
|
+
@page.button_element(:id => 'alert_button', :frame => frame).click
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
When(/^I trigger an confirm within a frame$/) do
|
|
99
|
+
@page.in_frame(:id => 'frame_3') do |frame|
|
|
100
|
+
@msg = @page.confirm(true) do
|
|
101
|
+
@page.button_element(:id => 'confirm_button', :frame => frame).click
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
When(/^I trigger an prompt within a frame$/) do
|
|
107
|
+
@page.in_frame(:id => 'frame_3') do |frame|
|
|
108
|
+
@msg = @page.prompt("Tim") do
|
|
109
|
+
@page.button_element(:id => 'prompt_button', :frame => frame).click
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
When(/^I get the text for the "([^"]*)" element$/) do |el|
|
|
2
|
+
@heading = @page.send "#{el}_id"
|
|
3
|
+
end
|
|
4
|
+
|
|
5
|
+
Then(/^I should see "([^"]*)"$/) do |text|
|
|
6
|
+
expect(@heading).to eql text
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
When(/^I search for the heading(\d+) by "([^"]*)"$/) do |head_type, type|
|
|
10
|
+
@heading = @page.send "h#{head_type}_#{type}"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
When(/^I locate the h(\d+) using "([^"]*)" and "([^"]*)"$/) do |head_type, param1, param2|
|
|
14
|
+
@text = @page.send "h#{head_type}_#{param1}_#{param2}".to_sym
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
When(/^I locate a h1 while the script is executing$/) do
|
|
18
|
+
@text = @page.h1_element(:id => 'h1_id').text
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
When(/^I locate a h2 while the script is executing$/) do
|
|
22
|
+
@text = @page.h2_element(:id => 'h2_id').text
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
When(/^I locate a h3 while the script is executing$/) do
|
|
26
|
+
@text = @page.h3_element(:id => 'h3_id').text
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
When(/^I locate a h4 while the script is executing$/) do
|
|
30
|
+
@text = @page.h4_element(:id => 'h4_id').text
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
When(/^I locate a h5 while the script is executing$/) do
|
|
34
|
+
@text = @page.h5_element(:id => 'h5_id').text
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
When(/^I locate a h6 while the script is executing$/) do
|
|
38
|
+
@text = @page.h6_element(:id => 'h6_id').text
|
|
39
|
+
end
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
When(/^I retrieve the hidden field element$/) do
|
|
2
|
-
@page.
|
|
2
|
+
@element = @page.hidden_field_id_element
|
|
3
3
|
end
|
|
4
4
|
|
|
5
5
|
Then(/^I should see the hidden field contains "(.*?)"$/) do |text|
|
|
@@ -7,7 +7,7 @@ Then(/^I should see the hidden field contains "(.*?)"$/) do |text|
|
|
|
7
7
|
end
|
|
8
8
|
|
|
9
9
|
When(/^I locate the hidden field by "(.*?)"$/) do |how|
|
|
10
|
-
@element = @page.send "hidden_field_#{how}
|
|
10
|
+
@element = @page.send "hidden_field_#{how}_element".to_sym
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
Then(/^hidden field element should contains "(.*?)"$/) do |text|
|
|
@@ -15,5 +15,9 @@ Then(/^hidden field element should contains "(.*?)"$/) do |text|
|
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
When(/^I search for the hidden field by "(.*?)" and "(.*?)"$/) do |param1, param2|
|
|
18
|
-
@element = @page.send "hidden_field_#{param1}_#{param2}
|
|
18
|
+
@element = @page.send "hidden_field_#{param1}_#{param2}_element".to_sym
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
When(/^I find a hidden field while the script is executing$/) do
|
|
22
|
+
@element = @page.hidden_field_element(:id => "hidden_field_id")
|
|
19
23
|
end
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
When(/^I get the image element$/) do
|
|
2
|
-
@element = @page.
|
|
2
|
+
@element = @page.image_id_element
|
|
3
3
|
end
|
|
4
4
|
|
|
5
5
|
Then(/^the image should be "(.*?)" pixels wide$/) do |width|
|
|
@@ -11,9 +11,13 @@ Then(/^the image should be "(.*?)" pixels tall$/) do |height|
|
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
When(/^I get the image element by "(.*?)"$/) do |how|
|
|
14
|
-
@element = @page.send "image_#{how}
|
|
14
|
+
@element = @page.send "image_#{how}_element".to_sym
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
When /^I get the image element bys "([^"]*)" and "([^"]*)"$/ do |param1, param2|
|
|
18
|
-
@element = @page.send "image_#{param1}_#{param2}
|
|
18
|
+
@element = @page.send "image_#{param1}_#{param2}_element"
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
When(/^I get the image element while the script is executing$/) do
|
|
22
|
+
@element = @page.image_element(:id => 'image_id')
|
|
19
23
|
end
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
When(/^I select the link labeled "(.*?)"$/) do |text|
|
|
2
|
-
@page.
|
|
2
|
+
@page.google_search_id_element
|
|
3
3
|
@page.google_search_id
|
|
4
4
|
end
|
|
5
5
|
|
|
@@ -8,12 +8,12 @@ When(/^I locate the link by "(.*?)"$/) do |how|
|
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
Then(/^I should be able to select the link$/) do
|
|
11
|
-
@page.send "google_search_#{@how}
|
|
11
|
+
@page.send "google_search_#{@how}_element".to_sym
|
|
12
12
|
@page.send "google_search_#{@how}".to_sym
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
When(/^I retrieve a link element$/) do
|
|
16
|
-
@element = @page.
|
|
16
|
+
@element = @page.google_search_id_element
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
Then(/^I should know it exists$/) do
|
|
@@ -27,3 +27,8 @@ end
|
|
|
27
27
|
When(/^I select a link labeled "(.*?)" and index "(.*?)"$/) do |label, index|
|
|
28
28
|
@page.send "#{label.downcase}#{index}".to_sym
|
|
29
29
|
end
|
|
30
|
+
|
|
31
|
+
When(/^I select a link while the script is executing$/) do
|
|
32
|
+
link = @page.link_element(:id => 'link_id')
|
|
33
|
+
link.click
|
|
34
|
+
end
|
|
@@ -3,10 +3,18 @@ When(/^I get the text from the list item$/) do
|
|
|
3
3
|
end
|
|
4
4
|
|
|
5
5
|
When(/^I locate the list item by "(.*?)"$/) do |how|
|
|
6
|
-
@element = @page.send "li_#{how}
|
|
6
|
+
@element = @page.send "li_#{how}_element".to_sym
|
|
7
7
|
@text = @element.text
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
When(/^I search for the list item by "(.*?)" and "(.*?)"$/) do |param1, param2|
|
|
11
11
|
@text = @page.send "li_#{param1}_#{param2}"
|
|
12
12
|
end
|
|
13
|
+
|
|
14
|
+
When(/^I retrieve a list item element$/) do
|
|
15
|
+
@element = @page.li_id_element
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
When(/^I search for the list item while the script is executing$/) do
|
|
19
|
+
@text = @page.list_item_element(:id => 'li_id').text
|
|
20
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
class ModalPage
|
|
2
|
+
include Druid
|
|
3
|
+
|
|
4
|
+
button(:launch_modal, :id => 'launch_modal_button')
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
class ModalDialog
|
|
8
|
+
include Druid
|
|
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 Druid
|
|
17
|
+
|
|
18
|
+
button(:close_window, :id => 'close_window')
|
|
19
|
+
button(:close_window_with_delay, :id => 'delayed_close')
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
Given(/^I am on the modal page$/) do
|
|
23
|
+
@page = ModalPage.new(@driver)
|
|
24
|
+
@page.navigate_to(UrlHelper.modal)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
When(/^I open a modal dialog$/) do
|
|
28
|
+
@page.modal_dialog do
|
|
29
|
+
@page.launch_modal
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
Then(/^I should be able to close the modal$/) do
|
|
34
|
+
@dialog = ModalDialog.new(@driver)
|
|
35
|
+
@dialog.attach_to_window(:title => 'Modal 1') do
|
|
36
|
+
@dialog.close_window
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
class NestedElementsPage
|
|
2
|
+
include Druid
|
|
3
|
+
|
|
4
|
+
div(:outer_div, :id => 'div_id')
|
|
5
|
+
link(:nested_link) { |page| page.outer_div_element.link_element }
|
|
6
|
+
button(:nested_button) { |page| page.outer_div_element.button_element }
|
|
7
|
+
text_field(:nested_text_field) { |page| page.outer_div_element.text_field_element }
|
|
8
|
+
hidden_field(:nested_hidden_field) { |page| page.outer_div_element.hidden_field_element }
|
|
9
|
+
text_area(:nested_text_area) { |page| page.outer_div_element.text_area_element }
|
|
10
|
+
select_list(:nested_select_list) { |page| page.outer_div_element.select_list_element }
|
|
11
|
+
checkbox(:nested_checkbox) { |page| page.outer_div_element.checkbox_element }
|
|
12
|
+
radio_button(:nested_radio_button) { |page| page.outer_div_element.radio_button_element }
|
|
13
|
+
div(:nested_div) { |page| page.outer_div_element.div_element }
|
|
14
|
+
span(:nested_span) { |page| page.outer_div_element.span_element }
|
|
15
|
+
table(:nested_table) { |page| page.outer_div_element.table_element }
|
|
16
|
+
cell(:nested_cell) { |page| page.outer_div_element.cell_element(:index => 1) }
|
|
17
|
+
image(:nested_image) { |page| page.outer_div_element.image_element }
|
|
18
|
+
form(:nested_form) { |page| page.outer_div_element.form_element }
|
|
19
|
+
ordered_list(:nested_ordered_list) { |page| page.outer_div_element.ordered_list_element }
|
|
20
|
+
unordered_list(:nested_unordered_list) { |page| page.outer_div_element.unordered_list_element }
|
|
21
|
+
list_item(:nested_list_item) { |page| page.nested_ordered_list_element.list_item_element }
|
|
22
|
+
h1(:nested_h1) { |page| page.outer_div_element.h1_element }
|
|
23
|
+
h2(:nested_h2) { |page| page.outer_div_element.h2_element }
|
|
24
|
+
h3(:nested_h3) { |page| page.outer_div_element.h3_element }
|
|
25
|
+
h4(:nested_h4) { |page| page.outer_div_element.h4_element }
|
|
26
|
+
h5(:nested_h5) { |page| page.outer_div_element.h5_element }
|
|
27
|
+
h6(:nested_h6) { |page| page.outer_div_element.h6_element }
|
|
28
|
+
paragraph(:nested_paragraph) { |page| page.outer_div_element.paragraph_element }
|
|
29
|
+
file_field(:nested_file_field) { |page| page.outer_div_element.file_field_element }
|
|
30
|
+
end
|
|
31
|
+
Given(/^I am on the nested elements page$/) do
|
|
32
|
+
@page = NestedElementsPage.new(@driver)
|
|
33
|
+
@page.navigate_to(UrlHelper.nested_elements)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
When(/^I search for a link located in a div$/) do
|
|
37
|
+
@link = @page.nested_link_element
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
Then(/^I should be able to click the nested link$/) do
|
|
41
|
+
@link.click
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
When(/^I search for a button located in a div$/) do
|
|
45
|
+
@button = @page.nested_button_element
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
Then(/^I should be able to click the nested button$/) do
|
|
49
|
+
@button.click
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
When(/^I search for a text field located in a div$/) do
|
|
53
|
+
@text_field = @page.nested_text_field_element
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
Then(/^I should be able to type "([^"]*)" in the nested text field$/) do |value|
|
|
57
|
+
@text_field.value = value
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
When(/^I search for a hidden field located in a div$/) do
|
|
61
|
+
@hidden_field = @page.nested_hidden_field_element
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
Then(/^I should be able to see that the nested hidden field contains "([^"]*)"$/) do |value|
|
|
65
|
+
expect(@hidden_field.value).to eql value
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
When(/^I search for a text area located in a div$/) do
|
|
69
|
+
@text_area = @page.nested_text_area_element
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
Then(/^I should be able to type "([^"]*)" in the nested text area$/) do |value|
|
|
73
|
+
@text_area.value = value
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
When(/^I search for a select list located in a div$/) do
|
|
77
|
+
@select_list = @page.nested_select_list_element
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
Then(/^I should be able to select "([^"]*)" in the nested select list$/) do |value|
|
|
81
|
+
@select_list.select value
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
When(/^I search for a checkbox located in a div$/) do
|
|
85
|
+
@checkbox = @page.nested_checkbox_element
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
Then(/^I should be able to check the nested checkbox$/) do
|
|
89
|
+
@checkbox.check
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
When(/^I search for a radio button located in a div$/) do
|
|
93
|
+
@radio_button = @page.nested_radio_button_element
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
Then(/^I should be able to select the nested radio button$/) do
|
|
97
|
+
@radio_button.select
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
When(/^I search for a div located in a div$/) do
|
|
101
|
+
@div = @page.nested_div_element
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
Then(/^I should see the text "([^"]*)" in the nested div$/) do |text|
|
|
105
|
+
expect(@div.text).to eql text
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
When(/^I search for a span located in a div$/) do
|
|
109
|
+
@span = @page.nested_span_element
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
Then(/^I should see the text "([^"]*)" in the nested span$/) do |text|
|
|
113
|
+
expect(@span.text).to eql text
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
When(/^I search for a table located in a div$/) do
|
|
117
|
+
@table = @page.nested_table_element
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
Then(/^the data for row "([^"]*)" of the nested table should be "([^"]*)" and "([^"]*)"$/) do |row, col1, col2|
|
|
121
|
+
table_row = @table[row.to_i - 1]
|
|
122
|
+
expect(table_row[0].text).to eql col1
|
|
123
|
+
expect(table_row[1].text).to eql col2
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
When(/^I search the second table cell located in a table in a div$/) do
|
|
127
|
+
@cell = @page.nested_cell_element
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
Then(/^the nested table cell should contain "([^"]*)"$/) do |text|
|
|
131
|
+
expect(@cell.text).to eql text
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
When(/^I search for an image located in a div$/) do
|
|
135
|
+
@image = @page.nested_image_element
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
Then(/^the nested image should be "([^"]*)" pixels wide$/) do |width|
|
|
139
|
+
expect(@image.width).to eql width.to_i
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
Then(/^the nested image should be "([^"]*)" pixels tall$/) do |height|
|
|
143
|
+
expect(@image.height).to eql height.to_i
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
When(/^I search for a form located in a div$/) do
|
|
147
|
+
@form = @page.nested_form_element
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
Then(/^I should be able to submit the nested form$/) do
|
|
151
|
+
@form.submit
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
When(/^I search for an ordered list located in a div$/) do
|
|
155
|
+
@list = @page.nested_ordered_list_element
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
Then(/^the first nested list items text should be "([^"]*)"$/) do |text|
|
|
159
|
+
expect(@list[0].text).to eql text
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
When(/^I search for an unordered list located in a div$/) do
|
|
163
|
+
@list = @page.nested_unordered_list_element
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
When(/^I search for a list item nested in a ordered list in a div$/) do
|
|
167
|
+
@li = @page.nested_list_item_element
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
Then(/^I should see the nested list items text should be "([^"]*)"$/) do |text|
|
|
171
|
+
expect(@li.text).to eql text
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
When(/^I search for a h(\d+) located in a div$/) do |head_type|
|
|
175
|
+
@header = @page.send "nested_h#{head_type}_element"
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
Then(/^I should see the nested h(\d+)s text should be "([^"]*)"$/) do |head_type, text|
|
|
179
|
+
expect(@header.text).to eql text
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
When(/^I search for a paragraph located in a div$/) do
|
|
183
|
+
@para = @page.nested_paragraph_element
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
Then(/^I should see the nested paragraphs text should be "([^"]*)"$/) do |text|
|
|
187
|
+
expect(@para.text).to eql text
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
When(/^I search for a file field located in a div$/) do
|
|
191
|
+
@ff = @page.nested_file_field_element
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
Then(/^I should be able to retrieve the nested file field$/) do
|
|
195
|
+
expect(@ff.exist?).to be true
|
|
196
|
+
end
|