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.
Files changed (145) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +5 -0
  3. data/.rspec +1 -0
  4. data/.rvmrc +1 -0
  5. data/.travis.yml +1 -2
  6. data/ChangeLog +218 -0
  7. data/Gemfile +2 -1
  8. data/README.md +64 -7
  9. data/Rakefile +1 -1
  10. data/druid.gemspec +25 -0
  11. data/features/async.feature +18 -0
  12. data/features/button.feature +42 -1
  13. data/features/checkbox.feature +7 -1
  14. data/features/div.feature +6 -0
  15. data/features/element.feature +100 -0
  16. data/features/file_field.feature +35 -0
  17. data/features/form.feature +12 -6
  18. data/features/frames.feature +57 -0
  19. data/features/heading.feature +164 -0
  20. data/features/hidden_field.feature +6 -0
  21. data/features/html/async.html +18 -0
  22. data/features/html/frame_1.html +18 -0
  23. data/features/html/frame_2.html +16 -0
  24. data/features/html/frame_3.html +14 -0
  25. data/features/html/frames.html +12 -0
  26. data/features/html/iframes.html +12 -0
  27. data/features/html/modal.html +17 -0
  28. data/features/html/modal_1.html +38 -0
  29. data/features/html/modal_2.html +27 -0
  30. data/features/html/nested_elements.html +52 -0
  31. data/features/html/nested_frame_1.html +1 -0
  32. data/features/html/nested_frame_2.html +11 -0
  33. data/features/html/nested_frame_3.html +14 -0
  34. data/features/html/nested_frames.html +10 -0
  35. data/features/html/static_elements.html +29 -23
  36. data/features/image.feature +8 -0
  37. data/features/link.feature +5 -0
  38. data/features/list_item.feature +5 -0
  39. data/features/modal_dialog.feature +9 -0
  40. data/features/nested_elements.feature +105 -0
  41. data/features/ordered_list.feature +6 -0
  42. data/features/page_level_actions.feature +48 -0
  43. data/features/paragraph.feature +33 -0
  44. data/features/radio_button.feature +6 -0
  45. data/features/select_list.feature +6 -1
  46. data/features/span.feature +6 -1
  47. data/features/step_definations/async_steps.rb +63 -0
  48. data/features/step_definations/button_steps.rb +25 -1
  49. data/features/step_definations/checkbox_steps.rb +5 -1
  50. data/features/step_definations/div_steps.rb +6 -1
  51. data/features/step_definations/element_steps.rb +55 -1
  52. data/features/step_definations/file_field_steps.rb +27 -0
  53. data/features/step_definations/form_steps.rb +8 -0
  54. data/features/step_definations/frame_steps.rb +112 -0
  55. data/features/step_definations/heading_steps.rb +39 -0
  56. data/features/step_definations/hidden_field_steps.rb +7 -3
  57. data/features/step_definations/image_steps.rb +7 -3
  58. data/features/step_definations/link_steps.rb +8 -3
  59. data/features/step_definations/list_item_steps.rb +9 -1
  60. data/features/step_definations/modal_dialog_steps.rb +38 -0
  61. data/features/step_definations/nested_elements_steps.rb +196 -0
  62. data/features/step_definations/ordered_list_steps.rb +11 -3
  63. data/features/step_definations/page_level_actions_steps.rb +72 -0
  64. data/features/step_definations/paragraph_steps.rb +15 -0
  65. data/features/step_definations/radio_button_steps.rb +5 -1
  66. data/features/step_definations/select_list_steps.rb +10 -2
  67. data/features/step_definations/span_steps.rb +5 -1
  68. data/features/step_definations/table_cell_steps.rb +5 -1
  69. data/features/step_definations/table_steps.rb +17 -3
  70. data/features/step_definations/text_area_steps.rb +18 -2
  71. data/features/step_definations/text_field_steps.rb +9 -1
  72. data/features/step_definations/unordered_list_steps.rb +11 -3
  73. data/features/support/env.rb +0 -15
  74. data/features/support/hooks.rb +7 -0
  75. data/features/support/page.rb +98 -1
  76. data/features/support/persistent_browser.rb +15 -0
  77. data/features/support/url_helper.rb +24 -1
  78. data/features/table.feature +7 -0
  79. data/features/table_cell.feature +6 -0
  80. data/features/text_area.feature +11 -0
  81. data/features/text_field.feature +6 -1
  82. data/features/unordered_list.feature +6 -0
  83. data/lib/druid.rb +251 -3
  84. data/lib/druid/accessors.rb +446 -158
  85. data/lib/druid/assist.rb +394 -0
  86. data/lib/druid/core_ext/string.rb +5 -0
  87. data/lib/druid/element_locators.rb +405 -0
  88. data/lib/druid/elements.rb +28 -0
  89. data/lib/druid/elements/button.rb +6 -1
  90. data/lib/druid/elements/check_box.rb +26 -0
  91. data/lib/druid/elements/div.rb +3 -1
  92. data/lib/druid/elements/element.rb +170 -5
  93. data/lib/druid/elements/file_field.rb +18 -0
  94. data/lib/druid/elements/form.rb +11 -0
  95. data/lib/druid/elements/heading.rb +14 -0
  96. data/lib/druid/elements/hidden_field.rb +12 -2
  97. data/lib/druid/elements/image.rb +13 -0
  98. data/lib/druid/elements/link.rb +2 -0
  99. data/lib/druid/elements/list_item.rb +3 -1
  100. data/lib/druid/elements/option.rb +9 -0
  101. data/lib/druid/elements/ordered_list.rb +4 -5
  102. data/lib/druid/elements/paragraph.rb +9 -0
  103. data/lib/druid/elements/radio_button.rb +25 -0
  104. data/lib/druid/elements/select_list.rb +10 -1
  105. data/lib/druid/elements/span.rb +3 -1
  106. data/lib/druid/elements/table.rb +20 -1
  107. data/lib/druid/elements/table_cell.rb +7 -0
  108. data/lib/druid/elements/table_row.rb +5 -1
  109. data/lib/druid/elements/text_area.rb +15 -1
  110. data/lib/druid/elements/text_field.rb +11 -1
  111. data/lib/druid/elements/unordered_list.rb +5 -5
  112. data/lib/druid/nested_elements.rb +103 -0
  113. data/lib/druid/page_factory.rb +4 -4
  114. data/lib/druid/page_populator.rb +71 -0
  115. data/spec/druid/accessors_spec.rb +789 -0
  116. data/spec/druid/druid_spec.rb +130 -7
  117. data/spec/druid/element_locators_spec.rb +160 -0
  118. data/spec/druid/elements/button_spec.rb +31 -0
  119. data/spec/druid/elements/check_box_spec.rb +38 -0
  120. data/spec/druid/elements/div_spec.rb +19 -0
  121. data/spec/druid/elements/element_spec.rb +150 -0
  122. data/spec/druid/elements/file_field_spec.rb +27 -0
  123. data/spec/druid/elements/form_spec.rb +27 -0
  124. data/spec/druid/elements/heading_spec.rb +39 -0
  125. data/spec/druid/elements/hidden_field_spec.rb +24 -0
  126. data/spec/druid/elements/image_spec.rb +32 -0
  127. data/spec/druid/elements/link_spec.rb +26 -0
  128. data/spec/druid/elements/list_item_spec.rb +19 -0
  129. data/spec/druid/elements/option_spec.rb +10 -0
  130. data/spec/druid/elements/ordered_list_spec.rb +42 -0
  131. data/spec/druid/elements/page_factory_spec.rb +40 -0
  132. data/spec/druid/elements/paragraph_spec.rb +21 -0
  133. data/spec/druid/elements/radio_button_spec.rb +38 -0
  134. data/spec/druid/elements/select_list_spec.rb +37 -0
  135. data/spec/druid/elements/span_spec.rb +19 -0
  136. data/spec/druid/elements/table_cell_spec.rb +23 -0
  137. data/spec/druid/elements/table_row_spec.rb +41 -0
  138. data/spec/druid/elements/table_spec.rb +52 -0
  139. data/spec/druid/elements/text_area_spec.rb +31 -0
  140. data/spec/druid/elements/text_field_spec.rb +31 -0
  141. data/spec/druid/elements/unordered_list_spec.rb +42 -0
  142. data/spec/druid/nested_element_spec.rb +128 -0
  143. data/spec/druid/page_populator_spec.rb +92 -0
  144. data/spec/spec_helper.rb +2 -1
  145. 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.hidden_field_id_hidden_field
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}_hidden_field".to_sym
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}_hidden_field".to_sym
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.image_id_image
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}_image".to_sym
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}_image"
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.google_search_id_link
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}_link".to_sym
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.google_search_id_link
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}_list_item".to_sym
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