druid-ts 1.1.8 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog +27 -0
  3. data/features/bold.feature +21 -0
  4. data/features/element.feature +7 -0
  5. data/features/frames.feature +15 -0
  6. data/features/html/frames.html +3 -3
  7. data/features/html/iframes.html +2 -2
  8. data/features/html/multi_elements.html +1 -0
  9. data/features/html/static_elements.html +25 -8
  10. data/features/javascript.feature +10 -1
  11. data/features/link.feature +4 -0
  12. data/features/multi_elements.feature +6 -0
  13. data/features/radio_button_group.feature +28 -0
  14. data/features/section.feature +128 -0
  15. data/features/select_list.feature +4 -0
  16. data/features/step_definations/bold_steps.rb +11 -0
  17. data/features/step_definations/element_steps.rb +8 -0
  18. data/features/step_definations/frame_steps.rb +53 -11
  19. data/features/step_definations/javasript_steps.rb +9 -0
  20. data/features/step_definations/link_steps.rb +8 -0
  21. data/features/step_definations/multi_elements_steps.rb +13 -0
  22. data/features/step_definations/radio_button_group_steps.rb +32 -0
  23. data/features/step_definations/section_steps.rb +262 -0
  24. data/features/step_definations/table_steps.rb +9 -0
  25. data/features/support/env.rb +1 -0
  26. data/features/support/page.rb +16 -5
  27. data/features/table.feature +18 -14
  28. data/lib/druid.rb +42 -30
  29. data/lib/druid/accessors.rb +188 -55
  30. data/lib/druid/assist.rb +46 -4
  31. data/lib/druid/elements.rb +1 -0
  32. data/lib/druid/elements/bold.rb +8 -0
  33. data/lib/druid/elements/element.rb +16 -3
  34. data/lib/druid/elements/link.rb +7 -0
  35. data/lib/druid/elements/radio_button.rb +0 -7
  36. data/lib/druid/elements/select_list.rb +2 -2
  37. data/lib/druid/elements/table.rb +7 -0
  38. data/lib/druid/javascript/angularjs.rb +12 -0
  39. data/lib/druid/javascript_framework_facade.rb +5 -3
  40. data/lib/druid/locator_generator.rb +1 -0
  41. data/lib/druid/page_factory.rb +1 -0
  42. data/lib/druid/page_populator.rb +10 -1
  43. data/lib/druid/sections.rb +29 -0
  44. data/lib/druid/version.rb +1 -1
  45. data/spec/druid/accessors_spec.rb +79 -13
  46. data/spec/druid/druid_spec.rb +2 -1
  47. data/spec/druid/element_locators_spec.rb +26 -4
  48. data/spec/druid/elements/bold_spec.rb +21 -0
  49. data/spec/druid/elements/link_spec.rb +1 -1
  50. data/spec/druid/elements/page_factory_spec.rb +2 -2
  51. data/spec/druid/elements/radio_button_spec.rb +0 -5
  52. data/spec/druid/elements/select_list_spec.rb +3 -3
  53. data/spec/druid/page_factory_spec.rb +15 -15
  54. data/spec/druid/page_populator_spec.rb +4 -4
  55. data/spec/druid/page_section_spec.rb +61 -0
  56. data/spec/spec_helper.rb +1 -0
  57. metadata +20 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 223b927cff511fe3738931183652014d9fdbda26
4
- data.tar.gz: 3a537221dd35b55e76e041c5843c9edc578e50ed
3
+ metadata.gz: 6bfc5bbc0d62062451dde2bf3d508d4d3a0c2383
4
+ data.tar.gz: b67836bb6d42f79df16267ecad88edbfa64a4ad1
5
5
  SHA512:
6
- metadata.gz: 185b221ecef0f768a161ad3eeeb66d6f627050e264225942e12691fccba97cfd41f12043d60d0dfb1cc05d64d162c50d3b5d1908ff14dea9617bfdc2eb6df9a1
7
- data.tar.gz: 3180f4ad4980423dcf9571a6a73ff9e7169758797a1dd9e9c3cafbab2fdc256cd5a8918bc3b159870ebb779fb7e9e4b30aaffc02703d7cd18552428f3da0055c
6
+ metadata.gz: 1886bcb9184acf5c0c1c4fbbc2cd4bd09606fea1e879c9af98a8e703b460b7ae610e2b08ce621cbc5ae14e6ad3cabf970d2904a60eb7963c4b963d0033d707ce
7
+ data.tar.gz: 6e1dd82de64f6be46c6fb271f7e5742a3a7fe182d06f3194455e7928355eba239053ddbb4e8c35b8fdec917172bb68e41696019fa88f0ea00deb2f0f79784381
data/ChangeLog CHANGED
@@ -1,6 +1,33 @@
1
+ ===Version 1.2.0/ 2017-01-24
2
+ * Enhancements
3
+ * Added new page_section/ page_sections method to accessor
4
+ === Version 1.1.9/2017-01-22
5
+ * Enhancements
6
+ * Populate_page_with now supports radio groups
7
+ * Added new page_url_value mehod that is created when you define page_url to return the value
8
+ * Checking the name of accessors to ensure it does not conflict with an existing druid method name
9
+ * Added support for dynamically finding elements inside iframes
10
+ * Reverted the method name check due to unintended consequences
11
+ * Added support to use multiple identifiers when locating nested frames / iframes
12
+ * Remove methods for clearing radio buttons
13
+ * Add support bold tag
14
+ * Fixed wait_for_expected_title so it detects if the title changes
15
+ === 2017-01-20
16
+ * Enhancements
17
+ * Super called when factory method invoked with non Druid class
18
+ * populate_page_with
1
19
  === 2017-01-19
2
20
  * Enhancements
3
21
  * Added elements method to accessor so one can generate methods for generic collections of elements
22
+ * Added class_name method to Element
23
+ * Added wait_for_expected_title and expected_element_visible methods
24
+ * Added select_text method to Element
25
+ * Added ability for execute_scripts to accept arguments
26
+ * Added ability to identify frame using a regular expression when using Watir
27
+ * Added href method to Link
28
+ * Added generation of plural version of basic types on class
29
+ * added accessor to support radio_button_group method
30
+ * Updated in_iframe methods to match the updates to the watir-webdriver gem
4
31
  === Version 1.1.8/2017-01-18
5
32
  * Enhancements
6
33
  * Added ability to find elements using any valid attribute
@@ -0,0 +1,21 @@
1
+ Feature: Bold
2
+
3
+ Background:
4
+ Given I am on the static elements page
5
+
6
+ Scenario: Getting the text of headings
7
+ When I get the bold text for the "b" element
8
+ Then I should see "some text in bold" in bold
9
+
10
+ Scenario Outline: Locating b on the page
11
+ When I search bold text for the b by "<search_by>"
12
+ Then I should see "some text in bold" in bold
13
+
14
+ Examples:
15
+ | search_by |
16
+ | id |
17
+ | class |
18
+ | name |
19
+ | xpath |
20
+ | index |
21
+ | css |
@@ -252,3 +252,10 @@ Feature: Elements
252
252
  Scenario: Accessing an HTML 5 element using the element method
253
253
  When I retrieve the figure using the element
254
254
  Then I should see the figure contains an image
255
+
256
+ Scenario: Getting the class name for an element
257
+ When I search for the paragraph by "id"
258
+ Then I should know the paragraph class is "p_class"
259
+
260
+ Scenario: Selecting the text for an element
261
+ Then I should be able to select "Elements" from the paragraph
@@ -41,6 +41,11 @@ Scenario: Identifying items in frames at runtime
41
41
  When I type "page-object" into the text field from frame 1 identified dynamically
42
42
  Then I should verify "page-object" in the text field for frame 1 identified dynamically
43
43
 
44
+ Scenario: Identifying items in iframes at runtime
45
+ Given I am on the iframe elements page
46
+ When I type "page-object" into the text field from iframe 1 identified dynamically
47
+ Then I should verify "page-object" in the text field for iframe 1 identified dynamically
48
+
44
49
  Scenario: Handling alerts inside frames
45
50
  Given I am on the frame elements page
46
51
  When I trigger an alert within a frame
@@ -55,3 +60,13 @@ Scenario: Handling prompts inside frames
55
60
  Given I am on the frame elements page
56
61
  When I trigger an prompt within a frame
57
62
  Then I should be able to get the message and default value
63
+
64
+ Scenario: Accessing elements within the frame using Regexp
65
+ Given I am on the frame elements page
66
+ When I type "page-object" into the text field for frame 2 using "regex"
67
+ Then I should verify "page-object" is in the text field for frame 2 using "regex"
68
+
69
+ Scenario: Accessing elements within the frame using multiple identifiers
70
+ Given I am on the iframe elements page
71
+ When I type "page-object" into the text field for frame 2 using "multiple identifiers"
72
+ Then I should verify "page-object" is in the text field for frame 2 using "multiple identifiers"
@@ -5,8 +5,8 @@
5
5
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
6
  </head>
7
7
  <frameset cols="40%, 40%, 20%">
8
- <frame src="frame_1.html" id="frame_1" name="frame1" />
9
- <frame src="frame_2.html" id="frame_2" name="frame2" />
10
- <frame src="frame_3.html" id="frame_3" name="frame3" />
8
+ <frame src="frame_1.html" id="frame_one_1" name="frame1" />
9
+ <frame src="frame_2.html" id="frame_two_2" name="frame2" />
10
+ <frame src="frame_3.html" id="frame_three_3" name="frame3" />
11
11
  </frameset>
12
12
  </html>
@@ -6,7 +6,7 @@
6
6
  </head>
7
7
  <body>
8
8
  <h1>Iframes</h1>
9
- <iframe src="frame_1.html" id="frame_1" name="frame1" class="iframe"></iframe>
10
- <iframe src="frame_2.html" id="frame_2" name="frame2" class="iframe"></iframe>
9
+ <iframe src="frame_1.html" id="frame_one_1" name="frame1" class="iframe"></iframe>
10
+ <iframe src="frame_2.html" id="frame_two_2" name="frame2" class="iframe"></iframe>
11
11
  </body>
12
12
  </html>
@@ -139,5 +139,6 @@
139
139
  <input type="file" class="file_field_class" title="File Field 2" />
140
140
  <input type="file" class="file_field_class" title="File Field 3" />
141
141
 
142
+ In bold <b>One B</b> and <b>Two B</b> for example text
142
143
  </body>
143
144
  </html>
@@ -18,6 +18,7 @@
18
18
  <select name="sel_list_name" id="sel_list_id" class="sel_list_class">
19
19
  <option value="option1">Test 1</option>
20
20
  <option value="option2">Test 2</option>
21
+ <option value="option3">Test/Test 3</option>
21
22
  </select>
22
23
 
23
24
  <select multiple="multiple" id="sel_list_multiple">
@@ -64,6 +65,13 @@
64
65
  <input type="radio" id="milk_id" name="milk_name" class="milk_class" value="Milk"> Milk <br />
65
66
  <input type="radio" id="butter_id" name="butter_name" class="butter_class" value="Butter">Butter
66
67
 
68
+ <br/>
69
+ <label>Radio Button Group</label>
70
+ <input type="radio" name="fav_cheese" value="ched">Cheddar</input>
71
+ <input type="radio" name="fav_cheese" value="emmen">Emmental</input>
72
+ <input type="radio" name="fav_cheese" value="muen">Muenster</input>
73
+ <br/>
74
+
67
75
  <div id="div_id" name="div_name" class="div_class" title="div_title">
68
76
  page-object rocks!
69
77
  </div>
@@ -81,13 +89,22 @@
81
89
  </label>
82
90
 
83
91
  <table id='table_id' name='table_name' class='table_class' border='1'>
84
- <tr>
85
- <td>Data1</td><td>Data2</td>
86
- </tr>
87
- <tr>
88
- <td>Data3</td>
89
- <td id='cell_id', name='cell_name' class='cell_class'>Data4</td>
90
- </tr>
92
+ <thead>
93
+ <tr>
94
+ <th>Table</th>
95
+ <th>Header</th>
96
+ </tr>
97
+ </thead>
98
+ <tbody>
99
+ <tr>
100
+ <td>Data1</td>
101
+ <td>Data2</td>
102
+ </tr>
103
+ <tr>
104
+ <td>Data3</td>
105
+ <td id='cell_id', name='cell_name' class='cell_class'>Data4</td>
106
+ </tr>
107
+ </tbody>
91
108
  </table>
92
109
 
93
110
  <table id="table_with_thead_id" border='1'>
@@ -176,6 +193,6 @@
176
193
  <figure id='figure_id'>
177
194
  <img src="images/img_pulpit.jpg" alt="The Pulpit Rock" width="304" height="228">
178
195
  </figure>
179
-
196
+ This text have <b id="b_id" class="b_class" name="b_name">some text in bold</b>
180
197
  </body>
181
198
  </html>
@@ -16,4 +16,13 @@ Feature: Handling javascript events
16
16
  Given I am on the static elements page
17
17
  Given I execute the javascript "return 2 + 2;"
18
18
  Then I should get the answer "4"
19
-
19
+
20
+ Scenario: Executing javascript in the browser with value arugment
21
+ Given I am on the static elements page
22
+ When I execute the javascript "return 2 + Number(arguments[0]);" with an argument of "2"
23
+ Then I should get the answer "4"
24
+
25
+ Scenario: Executing javascript in the browser with element argument
26
+ Given I am on the static elements page
27
+ When I execute the javascript "arguments[0].value = 'abcDEF';" with a text field argument
28
+ Then the text field should contain "abcDEF"
@@ -44,3 +44,7 @@ Feature: Links
44
44
  Scenario: Finding a link dynamically
45
45
  When I select a link while the script is executing
46
46
  And the page should contain the text "Success"
47
+
48
+ Scenario: Getting the href for a link
49
+ When I get the href for the link
50
+ Then I should know it was "success.html"
@@ -484,3 +484,9 @@ Feature: Multi Elements
484
484
  And the text for label 1 should be "Label 1"
485
485
  And the text for label 2 should be "Label 2"
486
486
  And the text for label 3 should be "Label 3"
487
+
488
+ Scenario: Selecting bs using an identifier
489
+ When I select the bs
490
+ Then I should have 2 bs
491
+ And the text for b 1 should be "One B"
492
+ And the text for b 2 should be "Two B"
@@ -0,0 +1,28 @@
1
+ Feature: Radio Button Groups
2
+ In order to interact with radio button groups
3
+ Testers will need access and interrogation ability
4
+
5
+
6
+ Background:
7
+ Given I am on the static elements page
8
+
9
+ Scenario: Confirm existence of a radio button group
10
+ Then I should see that the radio button group exists
11
+
12
+ Scenario: No radio buttons in the group have been selected
13
+ Then no radio buttons should be selected in the group
14
+
15
+ Scenario: Selecting grouped radio buttons by value
16
+ When I select the "ched" radio button in the group
17
+ Then the "ched" radio button should be selected in the group
18
+ And the "emmen" radio button should not be selected
19
+ And the "muen" radio button should not be selected
20
+ When I select the "muen" radio button in the group
21
+ Then the "ched" radio button should not be selected
22
+ And the "emmen" radio button should not be selected
23
+ And the "muen" radio button should be selected in the group
24
+
25
+ Scenario: Getting an array of elements for each radio button in the group
26
+ When I ask for the elements of a radio button group
27
+ Then I should have an array with elements for each radio button
28
+ And the radio button element values should be "ched", "emmen", "muen"
@@ -0,0 +1,128 @@
1
+ Feature: Sections
2
+
3
+ Background:
4
+ Given I am on the section elements page
5
+
6
+ Scenario: Getting the text from a section
7
+ When I get the text from the section
8
+ Then the text should include "page-object rocks!"
9
+
10
+ Scenario: Cannot find elements not in the section
11
+ When I access an element that is outside of the section
12
+ Then I should see that is doesn't exist in the section
13
+
14
+ Scenario: Finding a link within a section
15
+ When I search for a link located in a section
16
+ Then I should be able to click the section link
17
+
18
+ Scenario: Finding a button within a section
19
+ When I search for a button located in a section
20
+ Then I should be able to click the section button
21
+
22
+ Scenario: Finding a text field within a section
23
+ When I search for a text field located in a section
24
+ Then I should be able to type "123abc" in the section text field
25
+
26
+ Scenario: Finding a hidden field within a section
27
+ When I search for a hidden field located in a section
28
+ Then I should be able to see that the section hidden field contains "LeanDog"
29
+
30
+ Scenario: Finding a text area within a section
31
+ When I search for a text area located in a section
32
+ Then I should be able to type "abcdefg" in the section text area
33
+
34
+ Scenario: Finding a select list within a section
35
+ When I search for a select list located in a section
36
+ Then I should be able to select "Test 2" in the section select list
37
+
38
+ Scenario: Finding a file field within a section
39
+ When I search for a file field located in a section
40
+ Then I should be able to set the section file field
41
+
42
+ Scenario: Finding a checkbox within a section
43
+ When I search for a checkbox located in a section
44
+ Then I should be able to check the section checkbox
45
+
46
+ Scenario: Finding a radio button witin a section
47
+ When I search for a radio button located in a section
48
+ Then I should be able to select the section radio button
49
+
50
+ Scenario: Finding a div within a section
51
+ When I search for a div located in a section
52
+ Then I should see the text "page-object rocks!" in the section div
53
+
54
+ Scenario: Finding a span within a section
55
+ When I search for a span located in a section
56
+ Then I should see the text "My alert" in the section span
57
+
58
+ Scenario: Finding a table within a section
59
+ When I search for a table located in a section
60
+ Then the data for row "1" of the section table should be "Data1" and "Data2"
61
+
62
+ Scenario: Finding a table cell within a section
63
+ When I search the second table cell located in a table in a section
64
+ Then the section table cell should contain "Data2"
65
+
66
+ Scenario: Finding an image within a section
67
+ When I search for an image located in a section
68
+ Then the section image should be "106" pixels wide
69
+ And the section image should be "106" pixels tall
70
+
71
+ Scenario: Finding a form within a section
72
+ When I search for a form located in a section
73
+ Then I should be able to submit the section form
74
+
75
+ Scenario: Finding an ordered list within a section
76
+ When I search for an ordered list located in a section
77
+ Then the first section list items text should be "Number One"
78
+
79
+ Scenario: Finding an unordered list within a section
80
+ When I search for an unordered list located in a section
81
+ Then the first section list items text should be "Item One"
82
+
83
+ Scenario: Finding a list item section in an ordered list within a section
84
+ When I search for a list item section in an ordered list in a section
85
+ Then I should see the section list items text should be "Number One"
86
+
87
+ Scenario: Finding a h1 within a section
88
+ When I search for a h1 located in a section
89
+ Then I should see the section h1s text should be "h1's are cool"
90
+
91
+ Scenario: Finding a h2 within a section
92
+ When I search for a h2 located in a section
93
+ Then I should see the section h2s text should be "h2's are cool"
94
+
95
+ Scenario: Finding a h3 within a section
96
+ When I search for a h3 located in a section
97
+ Then I should see the section h3s text should be "h3's are cool"
98
+
99
+ Scenario: Finding a h4 within a section
100
+ When I search for a h4 located in a section
101
+ Then I should see the section h4s text should be "h4's are cool"
102
+
103
+ Scenario: Finding a h5 within a section
104
+ When I search for a h5 located in a section
105
+ Then I should see the section h5s text should be "h5's are cool"
106
+
107
+ Scenario: Finding a h6 within a section
108
+ When I search for a h6 located in a section
109
+ Then I should see the section h6s text should be "h6's are cool"
110
+
111
+ Scenario: Finding a paragraph within a section
112
+ When I search for a paragraph located in a section
113
+ Then I should see the section paragraphs text should be "This is a paragraph."
114
+
115
+ Scenario: Selecting multiple sections
116
+ When I select multiple sections
117
+ Then I should have a section collection containing the sections
118
+ And I can access any index of that collection of sections
119
+
120
+ Scenario: Searching section collection
121
+ Given I select multiple sections
122
+ When I search by a specific value of the section
123
+ Then I will find the first section with that value
124
+
125
+ Scenario: Filtering section collection
126
+ Given I select multiple sections
127
+ When I filter by a specific value of the sections
128
+ Then I will find all sections with that value
@@ -9,6 +9,10 @@ Feature: Select List
9
9
  When I select "Test 2" from the select list
10
10
  Then the current item should be "Test 2"
11
11
 
12
+ Scenario: Selecting an element when there is a forward slash
13
+ When I select "Test/Test 3" from the select list
14
+ Then the current item should be "Test/Test 3"
15
+
12
16
  Scenario Outline: Locating select lists on the Page
13
17
  When I locate the select list by "<locate_by>"
14
18
  Then I should be able to select "Test 2"
@@ -0,0 +1,11 @@
1
+ When(/^I get the bold text for the "([^"]*)" element$/) do |el|
2
+ @b = @page.send "#{el}_id"
3
+ end
4
+
5
+ Then(/^I should see "([^"]*)" in bold$/) do |text|
6
+ expect(@b).to eql text
7
+ end
8
+
9
+ When(/^I search bold text for the b by "([^"]*)"$/) do |type|
10
+ @b = @page.send "b_#{type}"
11
+ end
@@ -167,3 +167,11 @@ Then(/^I should know the attribute "([^"]*)" includes "([^"]*)"$/) do |attribute
167
167
  @attr = @element.attribute(attribute)
168
168
  expect(@attr).to include included
169
169
  end
170
+
171
+ Then(/^I should know the paragraph class is "([^"]*)"$/) do |class_name|
172
+ expect(@page.p_id_element.class_name).to eql class_name
173
+ end
174
+
175
+ Then(/^I should be able to select "([^"]*)" from the paragraph$/) do |text|
176
+ @page.p_id_element.select_text text
177
+ end
@@ -1,7 +1,7 @@
1
1
  class FramePage
2
2
  include Druid
3
3
 
4
- in_frame(:id => "frame_2") do |frame|
4
+ in_frame(:id => "frame_two_2") do |frame|
5
5
  text_field(:text_field_2_id, :name => 'recieverElement', :frame => frame)
6
6
  end
7
7
 
@@ -13,7 +13,7 @@ class FramePage
13
13
  text_field(:text_field_2_index, :name => 'recieverElement', :frame => frame)
14
14
  end
15
15
 
16
- in_frame(:id => "frame_1") do |frame|
16
+ in_frame(:id => "frame_one_1") do |frame|
17
17
  text_field(:text_field_1_id, :name => 'senderElement', :frame => frame)
18
18
  end
19
19
 
@@ -25,6 +25,36 @@ class FramePage
25
25
  text_field(:text_field_1_index, :name => 'senderElement', :frame => frame)
26
26
  end
27
27
 
28
+ in_frame(:id => /frame_two_\d+/) do |frame|
29
+ text_field(:text_field_2_regex, :name => 'recieverElement', :frame => frame)
30
+ end
31
+
32
+ end
33
+
34
+ class IFramePage
35
+ include Druid
36
+
37
+ in_iframe(:id => 'frame_two_2') do |frame|
38
+ text_field(:text_field_2_id, :name => 'recieverElement', :frame => frame)
39
+ end
40
+ in_iframe(:id => 'frame_one_1') do |frame|
41
+ text_field(:text_field_1_id, :name => 'senderElement', :frame => frame)
42
+ end
43
+ in_iframe(:name => 'frame2') do |frame|
44
+ text_field(:text_field_2_name, :name => 'recieverElement', :frame => frame)
45
+ end
46
+ in_iframe(:name => 'frame1') do |frame|
47
+ text_field(:text_field_1_name, :name => 'senderElement', :frame => frame)
48
+ end
49
+ in_iframe(:index => 1) do |frame|
50
+ text_field(:text_field_2_index, :name => 'recieverElement', :frame => frame)
51
+ end
52
+ in_iframe(:index => 0) do |frame|
53
+ text_field(:text_field_1_index, :name => 'senderElement', :frame => frame)
54
+ end
55
+ in_iframe(:class => 'iframe', :name => 'frame2') do |frame|
56
+ text_field(:text_field_2_multiple_identifiers, :name => 'recieverElement', :frame => frame)
57
+ end
28
58
  end
29
59
 
30
60
  Given(/^I am on the frame elements page$/) do
@@ -33,11 +63,11 @@ Given(/^I am on the frame elements page$/) do
33
63
  end
34
64
 
35
65
  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
66
+ @page.send "text_field_2_#{arg_type.gsub(' ','_')}=".to_sym, text
37
67
  end
38
68
 
39
69
  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
70
+ result = @page.send "text_field_2_#{arg_type.gsub(' ','_')}".to_sym
41
71
  expect(result).to eql text
42
72
  end
43
73
 
@@ -51,8 +81,8 @@ Then(/^I should verify "(.*?)" is in the text field for frame 1 using "(.*?)"$/)
51
81
  end
52
82
 
53
83
  Given(/^I am on the iframe elements page$/) do
54
- @page = FramePage.new(@driver)
55
- @page.navigate_to(UrlHelper.frame_elements)
84
+ @page = IFramePage.new(@driver)
85
+ @page.navigate_to(UrlHelper.iframe_elements)
56
86
  end
57
87
 
58
88
  class NestedFramePage
@@ -76,19 +106,19 @@ Then(/^I should be able to click the link in the frame$/) do
76
106
  end
77
107
 
78
108
  When(/^I type "([^"]*)" into the text field from frame 1 identified dynamically$/) do |value|
79
- @page.in_frame(:id => 'frame_1') do |frame|
109
+ @page.in_frame(:id => 'frame_one_1') do |frame|
80
110
  @page.text_field_element(:name => 'senderElement', :frame => frame).value = value
81
111
  end
82
112
  end
83
113
 
84
114
  Then(/^I should verify "([^"]*)" in the text field for frame 1 identified dynamically$/) do |value|
85
- @page.in_frame(:id => 'frame_1') do |frame|
115
+ @page.in_frame(:id => 'frame_one_1') do |frame|
86
116
  expect(@page.text_field_element(:name => 'senderElement', :frame => frame).value).to eql value
87
117
  end
88
118
  end
89
119
 
90
120
  When(/^I trigger an alert within a frame$/) do
91
- @page.in_frame(:id => 'frame_3') do |frame|
121
+ @page.in_frame(:id => 'frame_three_3') do |frame|
92
122
  @msg = @page.alert do
93
123
  @page.button_element(:id => 'alert_button', :frame => frame).click
94
124
  end
@@ -96,7 +126,7 @@ When(/^I trigger an alert within a frame$/) do
96
126
  end
97
127
 
98
128
  When(/^I trigger an confirm within a frame$/) do
99
- @page.in_frame(:id => 'frame_3') do |frame|
129
+ @page.in_frame(:id => 'frame_three_3') do |frame|
100
130
  @msg = @page.confirm(true) do
101
131
  @page.button_element(:id => 'confirm_button', :frame => frame).click
102
132
  end
@@ -104,9 +134,21 @@ When(/^I trigger an confirm within a frame$/) do
104
134
  end
105
135
 
106
136
  When(/^I trigger an prompt within a frame$/) do
107
- @page.in_frame(:id => 'frame_3') do |frame|
137
+ @page.in_frame(:id => 'frame_three_3') do |frame|
108
138
  @msg = @page.prompt("Tim") do
109
139
  @page.button_element(:id => 'prompt_button', :frame => frame).click
110
140
  end
111
141
  end
112
142
  end
143
+
144
+ When(/^I type "([^"]*)" into the text field from iframe 1 identified dynamically$/) do |value|
145
+ @page.in_iframe(:id => 'frame_one_1') do |frame|
146
+ @page.text_field_element(:name => 'senderElement', :frame => frame).value = value
147
+ end
148
+ end
149
+
150
+ Then(/^I should verify "([^"]*)" in the text field for iframe 1 identified dynamically$/) do |value|
151
+ @page.in_iframe(:id => 'frame_one_1') do |frame|
152
+ expect(@page.text_field_element(:name => 'senderElement', :frame => frame).value).to eql value
153
+ end
154
+ end