selenium-cucumber 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- data/doc/canned_steps.md +102 -79
- data/doc/selenium-cucumber-API.md +2 -0
- data/lib/selenium-cucumber.rb +1 -7
- data/lib/selenium-cucumber/assertion_steps.rb +17 -16
- data/lib/selenium-cucumber/click_elements_steps.rb +6 -1
- data/lib/selenium-cucumber/input_steps.rb +1 -1
- data/lib/selenium-cucumber/javascript_handling_steps.rb +1 -1
- data/lib/selenium-cucumber/methods/assertion_methods.rb +31 -29
- data/lib/selenium-cucumber/methods/click_elements_methods.rb +4 -0
- data/lib/selenium-cucumber/methods/input_methods.rb +13 -26
- data/lib/selenium-cucumber/methods/javascript_handling_methods.rb +6 -2
- data/lib/selenium-cucumber/methods/misc_methods.rb +5 -1
- data/lib/selenium-cucumber/methods/navigate_methods.rb +8 -2
- data/lib/selenium-cucumber/navigation_steps.rb +10 -5
- data/lib/selenium-cucumber/version.rb +1 -1
- metadata +2 -4
- data/lib/selenium-cucumber/methods/press_button_methods.rb +0 -6
- data/lib/selenium-cucumber/press_button_steps.rb +0 -19
data/doc/canned_steps.md
CHANGED
@@ -14,7 +14,7 @@ To open/close URL and to navigate between pages use following steps
|
|
14
14
|
|
15
15
|
To interact with browser use following steps
|
16
16
|
|
17
|
-
Then I resize browser
|
17
|
+
Then I resize browser window size to width (\d+) and heigth (\d+)
|
18
18
|
Then I close browser
|
19
19
|
|
20
20
|
To zoom in/out webpage use following steps
|
@@ -36,31 +36,41 @@ To reset webpage view use following step
|
|
36
36
|
|
37
37
|
To scroll webpage use following step
|
38
38
|
|
39
|
-
Then I scroll to
|
40
|
-
Then I scroll to
|
41
|
-
Then I scroll to
|
42
|
-
Then I scroll to
|
43
|
-
Then I scroll to
|
39
|
+
Then I scroll to element having id "(.*?)"
|
40
|
+
Then I scroll to element having name "(.*?)"
|
41
|
+
Then I scroll to element having class "(.*?)"
|
42
|
+
Then I scroll to element having xpath "(.*?)"
|
43
|
+
Then I scroll to element having css "(.*?)"
|
44
|
+
|
45
|
+
To hover over a element use following step
|
46
|
+
|
47
|
+
Then I hover over element having id "(.*?)"
|
48
|
+
Then I hover over element having name "(.*?)"
|
49
|
+
Then I hover over element having class "(.*?)"
|
50
|
+
Then I hover over element having xpath "(.*?)"
|
51
|
+
Then I hover over element having css "(.*?)"
|
52
|
+
|
44
53
|
|
45
54
|
Assertion Steps
|
46
55
|
---------------
|
47
56
|
To assert that page title can be found use following step.
|
48
57
|
|
49
|
-
Then I see page title as "(.*?)"
|
58
|
+
Then I should see page title as "(.*?)"
|
50
59
|
|
51
60
|
To assert element text use any of the following steps.
|
52
61
|
|
53
|
-
Then
|
54
|
-
Then
|
55
|
-
Then
|
56
|
-
Then
|
57
|
-
Then
|
58
|
-
|
59
|
-
Then
|
60
|
-
Then
|
61
|
-
Then
|
62
|
-
Then
|
63
|
-
Then
|
62
|
+
Then element having id "([^\"]*)" should have text as "(.*?)"
|
63
|
+
Then element having name "([^\"]*)" should have text as "(.*?)"
|
64
|
+
Then element having class "([^\"]*)" should have text as "(.*?)"
|
65
|
+
Then element having xpath "([^\"]*)" should have text as "(.*?)"
|
66
|
+
Then element having css "([^\"]*)" should have text as "(.*?)"
|
67
|
+
|
68
|
+
Then element having id "([^\"]*)" should not have text as "(.*?)"
|
69
|
+
Then element having name "([^\"]*)" should not have text as "(.*?)"
|
70
|
+
Then element having class "([^\"]*)" should not have text as "(.*?)"
|
71
|
+
Then element having xpath "([^\"]*)" should not have text as "(.*?)"
|
72
|
+
Then element having css "([^\"]*)" should not have text as "(.*?)"
|
73
|
+
|
64
74
|
|
65
75
|
To assert element attribute use any of the following steps.
|
66
76
|
|
@@ -94,92 +104,97 @@ To assert that element is disabled use any of the following steps.
|
|
94
104
|
|
95
105
|
To assert that element is present use any of the following steps.
|
96
106
|
|
97
|
-
Then
|
98
|
-
Then
|
99
|
-
Then
|
100
|
-
Then
|
101
|
-
Then
|
107
|
+
Then element having id "([^\"]*)" should be present
|
108
|
+
Then element having name "([^\"]*)" should be present
|
109
|
+
Then element having class "([^\"]*)" should be present
|
110
|
+
Then element having xpath "([^\"]*)" should be present
|
111
|
+
Then element having css "([^\"]*)" should be present
|
102
112
|
|
103
113
|
To assert that element is not present use any of the following steps.
|
104
114
|
|
105
|
-
Then
|
106
|
-
Then
|
107
|
-
Then
|
108
|
-
Then
|
109
|
-
Then
|
115
|
+
Then element having id "([^\"]*)" should not be present
|
116
|
+
Then element having name "([^\"]*)" should not be present
|
117
|
+
Then element having class "([^\"]*)" should not be present
|
118
|
+
Then element having xpath "([^\"]*)" should not be present
|
119
|
+
Then element having css "([^\"]*)" should not be present
|
110
120
|
|
111
121
|
|
112
122
|
To assert that checkbox is checked use any of the following steps.
|
113
123
|
|
114
|
-
Then
|
115
|
-
Then
|
116
|
-
Then
|
117
|
-
Then
|
118
|
-
Then
|
124
|
+
Then checkbox having id "(.*?)" should be checked
|
125
|
+
Then checkbox having name "(.*?)" should be checked
|
126
|
+
Then checkbox having class "(.*?)" should be checked
|
127
|
+
Then checkbox having xpath "(.*?)" should be checked
|
128
|
+
Then checkbox having css "(.*?)" should be checked
|
119
129
|
|
120
130
|
To assert that checkbox is unchecked use any of the following steps.
|
121
131
|
|
122
|
-
Then
|
123
|
-
Then
|
124
|
-
Then
|
125
|
-
Then
|
126
|
-
Then
|
132
|
+
Then checkbox having id "(.*?)" should be unchecked
|
133
|
+
Then checkbox having name "(.*?)" should be unchecked
|
134
|
+
Then checkbox having class "(.*?)" should be unchecked
|
135
|
+
Then checkbox having xpath "(.*?)" should be unchecked
|
136
|
+
Then checkbox having css "(.*?)" should be unchecked
|
127
137
|
|
128
138
|
To assert that radio button selected use any of the following steps.
|
129
139
|
|
130
|
-
Then
|
131
|
-
Then
|
132
|
-
Then
|
133
|
-
Then
|
134
|
-
Then
|
140
|
+
Then radio button having id "(.*?)" should be selected
|
141
|
+
Then radio button having name "(.*?)" should be selected
|
142
|
+
Then radio button having class "(.*?)" should be selected
|
143
|
+
Then radio button having xpath "(.*?)" should be selected
|
144
|
+
Then radio button having css "(.*?)" should be selected
|
135
145
|
|
136
146
|
To assert that radio button not selected use any of the following steps.
|
137
147
|
|
138
|
-
Then
|
139
|
-
Then
|
140
|
-
Then
|
141
|
-
Then
|
142
|
-
Then
|
148
|
+
Then radio button having id "(.*?)" should be unselected
|
149
|
+
Then radio button having name "(.*?)" should be unselected
|
150
|
+
Then radio button having class "(.*?)" should be unselected
|
151
|
+
Then radio button having xpath "(.*?)" should be unselected
|
152
|
+
Then radio button having css "(.*?)" should be unselected
|
143
153
|
|
144
154
|
To assert that radio button group selected by text use any of the following steps.
|
145
155
|
|
146
|
-
Then
|
147
|
-
Then
|
148
|
-
Then
|
149
|
-
Then
|
150
|
-
Then
|
151
|
-
|
156
|
+
Then option "(.*?)" by text from radio button group having id "(.*?)" should be selected
|
157
|
+
Then option "(.*?)" by text from radio button group having name "(.*?)" should be selected
|
158
|
+
Then option "(.*?)" by text from radio button group having class "(.*?)" should be selected
|
159
|
+
Then option "(.*?)" by text from radio button group having xpath "(.*?)" should be selected
|
160
|
+
Then option "(.*?)" by text from radio button group having css "(.*?)" should be selected
|
161
|
+
|
152
162
|
To assert that radio button group selected by value use any of the following steps.
|
153
163
|
|
154
|
-
Then
|
155
|
-
Then
|
156
|
-
Then
|
157
|
-
Then
|
158
|
-
Then
|
164
|
+
Then option "(.*?)" by value from radio button group having id "(.*?)" should be selected
|
165
|
+
Then option "(.*?)" by value from radio button group having name "(.*?)" should be selected
|
166
|
+
Then option "(.*?)" by value from radio button group having class "(.*?)" should be selected
|
167
|
+
Then option "(.*?)" by value from radio button group having xpath "(.*?)" should be selected
|
168
|
+
Then option "(.*?)" by value from radio button group having css "(.*?)" should be selected
|
159
169
|
|
160
170
|
To assert that radio button group not selected by text use any of the following steps.
|
161
171
|
|
162
|
-
Then
|
163
|
-
Then
|
164
|
-
Then
|
165
|
-
Then
|
166
|
-
Then
|
172
|
+
Then option "(.*?)" by text from radio button group having id "(.*?)" should be unselected
|
173
|
+
Then option "(.*?)" by text from radio button group having name "(.*?)" should be unselected
|
174
|
+
Then option "(.*?)" by text from radio button group having class "(.*?)" should be unselected
|
175
|
+
Then option "(.*?)" by text from radio button group having xpath "(.*?)" should be unselected
|
176
|
+
Then option "(.*?)" by text from radio button group having css "(.*?)" should be unselected
|
167
177
|
|
168
178
|
To assert that radio button group not selected by value use any of the following steps.
|
169
179
|
|
170
|
-
Then
|
171
|
-
Then
|
172
|
-
Then
|
173
|
-
Then
|
174
|
-
Then
|
180
|
+
Then option "(.*?)" by value from radio button group having id "(.*?)" should be unselected
|
181
|
+
Then option "(.*?)" by value from radio button group having name "(.*?)" should be unselected
|
182
|
+
Then option "(.*?)" by value from radio button group having class "(.*?)" should be unselected
|
183
|
+
Then option "(.*?)" by value from radio button group having xpath "(.*?)" should be unselected
|
184
|
+
Then option "(.*?)" by value from radio button group having css "(.*?)" should be unselected
|
175
185
|
|
176
186
|
To assert that link is present use following steps
|
177
187
|
|
178
|
-
Then
|
179
|
-
Then
|
180
|
-
|
181
|
-
Then
|
182
|
-
Then
|
188
|
+
Then link having text "(.*?)" should be present
|
189
|
+
Then link having partial text "(.*?)" should be present
|
190
|
+
|
191
|
+
Then link having text "(.*?)" should not be present
|
192
|
+
Then link having partial text "(.*?)" should not be present
|
193
|
+
|
194
|
+
To assert text on javascipt pop-up alert
|
195
|
+
|
196
|
+
Then I should see alert text as "(.*?)"
|
197
|
+
|
183
198
|
|
184
199
|
Input Steps
|
185
200
|
-----------
|
@@ -249,11 +264,11 @@ To uncheck checkbox use following steps
|
|
249
264
|
|
250
265
|
To toggle checkbox use following steps
|
251
266
|
|
252
|
-
Then toggle checkbox having id "(.*?)"
|
253
|
-
Then toggle checkbox having name "(.*?)"
|
254
|
-
Then toggle checkbox having class "(.*?)"
|
255
|
-
Then toggle checkbox having xpath "(.*?)"
|
256
|
-
Then toggle checkbox having css "(.*?)"
|
267
|
+
Then I toggle checkbox having id "(.*?)"
|
268
|
+
Then I toggle checkbox having name "(.*?)"
|
269
|
+
Then I toggle checkbox having class "(.*?)"
|
270
|
+
Then I toggle checkbox having xpath "(.*?)"
|
271
|
+
Then I toggle checkbox having css "(.*?)"
|
257
272
|
|
258
273
|
To select radio button use following steps
|
259
274
|
|
@@ -291,6 +306,14 @@ To click on web element use following steps
|
|
291
306
|
Then I click on element having xpath "(.*?)"
|
292
307
|
Then I click on element having css "(.*?)"
|
293
308
|
|
309
|
+
To forcefully click on web element use following steps (if above steps not worked)
|
310
|
+
|
311
|
+
Then I forcefully click on element having id "(.*?)"
|
312
|
+
Then I forcefully click on element having name "(.*?)"
|
313
|
+
Then I forcefully click on element having class "(.*?)"
|
314
|
+
Then I forcefully click on element having xpath "(.*?)"
|
315
|
+
Then I forcefully click on element having css "(.*?)"
|
316
|
+
|
294
317
|
To click on links use following steps
|
295
318
|
|
296
319
|
Then I click on link having text "(.*?)"
|
data/lib/selenium-cucumber.rb
CHANGED
@@ -1,8 +1,2 @@
|
|
1
1
|
|
2
|
-
|
3
|
-
require 'selenium-cucumber/input_steps'
|
4
|
-
require 'selenium-cucumber/navigation_steps'
|
5
|
-
require 'selenium-cucumber/click_elements_steps'
|
6
|
-
require 'selenium-cucumber/progress_steps'
|
7
|
-
require 'selenium-cucumber/screenshot_steps'
|
8
|
-
require 'selenium-cucumber/configuration_steps'
|
2
|
+
Dir[File.dirname(__FILE__) + '/selenium-cucumber/*.rb'].each {|file| require file }
|
@@ -2,12 +2,12 @@ require_relative 'methods/assertion_methods'
|
|
2
2
|
|
3
3
|
|
4
4
|
#Page title checking
|
5
|
-
Then(/^I see page title as "(.*?)"$/) do |title|
|
5
|
+
Then(/^I should see page title as "(.*?)"$/) do |title|
|
6
6
|
check_title(title)
|
7
7
|
end
|
8
8
|
|
9
9
|
#Step to check element text
|
10
|
-
Then(/^
|
10
|
+
Then(/^element having (.+) "([^\"]*)" should\s*((?:not)?)\s+have text as "(.*?)"$/) do |type, access_name,present, value |
|
11
11
|
validate_locator type
|
12
12
|
check_element_text(type, value, access_name, present.empty?)
|
13
13
|
end
|
@@ -27,42 +27,43 @@ Then(/^element having (.+) "([^\"]*)" should\s*((?:not)?)\s+be (enabled|disabled
|
|
27
27
|
end
|
28
28
|
|
29
29
|
#Step to check element present or not
|
30
|
-
Then(/^
|
30
|
+
Then(/^element having (.+) "([^\"]*)" should\s*((?:not)?)\s+be present"$/) do |type, access_name, present|
|
31
31
|
validate_locator type
|
32
32
|
check_element_presence(type, access_name, present.empty?)
|
33
33
|
end
|
34
34
|
|
35
35
|
#Step to assert checkbox is checked or unchecked
|
36
|
-
Then(/^
|
36
|
+
Then(/^checkbox having (.+) "(.*?)" should be (checked|unchecked)$/) do |type, access_name, state|
|
37
37
|
validate_locator type
|
38
38
|
flag = state == "checked"
|
39
|
-
flag = !flag unless present.empty?
|
40
39
|
is_checkbox_checked(type, access_name, flag)
|
41
40
|
end
|
42
41
|
|
43
42
|
#steps to assert radio button checked or unchecked
|
44
|
-
Then(/^
|
43
|
+
Then(/^radio button having (.+) "(.*?)" should be (selected|unselected)$/) do |type, access_name, state|
|
45
44
|
validate_locator type
|
46
45
|
flag = state == "checked"
|
47
|
-
flag = !flag unless present.empty?
|
48
46
|
is_radio_button_selected(type, access_name, flag)
|
49
47
|
end
|
50
48
|
|
51
|
-
#steps to assert option by text from radio button group selected
|
52
|
-
Then(/^
|
49
|
+
#steps to assert option by text from radio button group selected/unselected
|
50
|
+
Then(/^option "(.*?)" by (.+) from radio button group having (.+) "(.*?)" should be (selected|unselected)$/) do |option, attrb, type, access_name, state|
|
53
51
|
validate_locator type
|
54
52
|
flag = state == "selected"
|
55
|
-
|
56
|
-
is_option_from_radio_button_group_selected(type, attr, option, access_name, flag)
|
53
|
+
is_option_from_radio_button_group_selected(type, attrb, option, access_name, flag)
|
57
54
|
end
|
58
55
|
|
59
56
|
#steps to check link presence
|
60
|
-
Then(/^
|
61
|
-
|
57
|
+
Then(/^link having text "(.*?)" should\s*((?:not)?)\s+be present$/) do |present,access_name|
|
58
|
+
check_element_presence("link", access_name, present.empty?)
|
62
59
|
end
|
63
60
|
|
64
|
-
|
65
|
-
|
66
|
-
check_element_presence("partial_link_text", access_name, present.empty?)
|
61
|
+
Then(/^link having partial text "(.*?)" should\s*((?:not)?)\s+be present$/) do |present,access_name|
|
62
|
+
check_element_presence("partial_link_text", access_name, present.empty?)
|
67
63
|
end
|
68
64
|
|
65
|
+
#Step to assert javascript pop-up alert text
|
66
|
+
|
67
|
+
Then(/^I should see alert text as "(.*?)"$/) do |actual_value|
|
68
|
+
check_alert_text(actual_value)
|
69
|
+
end
|
@@ -4,7 +4,12 @@ require_relative 'methods/click_elements_methods'
|
|
4
4
|
|
5
5
|
When(/^I click on element having (.+) "(.*?)"$/) do |type, access_name|
|
6
6
|
validate_locator type
|
7
|
-
click(
|
7
|
+
click(type,access_name)
|
8
|
+
end
|
9
|
+
|
10
|
+
Then(/^I forcefully click on element having (.+) "(.*?)"$/) do |type, access_name|
|
11
|
+
validate_locator type
|
12
|
+
click_forcefully(type, access_name)
|
8
13
|
end
|
9
14
|
|
10
15
|
#steps to click on link
|
@@ -8,7 +8,7 @@ end
|
|
8
8
|
|
9
9
|
def check_title(title)
|
10
10
|
if(get_page_title!=title)
|
11
|
-
raise "Page Title Not Matched"
|
11
|
+
raise TestCaseFailed ,"Page Title Not Matched"
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
@@ -23,11 +23,11 @@ def check_element_text(access_type, actual_value, access_name, test_case)
|
|
23
23
|
|
24
24
|
if test_case
|
25
25
|
if(element_text!=actual_value)
|
26
|
-
raise "Text Not Matched"
|
26
|
+
raise TestCaseFailed ,"Text Not Matched"
|
27
27
|
end
|
28
28
|
else
|
29
29
|
if(element_text==actual_value)
|
30
|
-
raise "Text Matched"
|
30
|
+
raise TestCaseFailed ,"Text Matched"
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
@@ -44,11 +44,11 @@ def check_element_enable(access_type, access_name, test_case)
|
|
44
44
|
|
45
45
|
if test_case
|
46
46
|
if(!result)
|
47
|
-
raise "Element
|
47
|
+
raise TestCaseFailed ,"Element Not Enabled"
|
48
48
|
end
|
49
49
|
else
|
50
50
|
if(result)
|
51
|
-
raise "Element
|
51
|
+
raise TestCaseFailed ,"Element Enabled"
|
52
52
|
end
|
53
53
|
end
|
54
54
|
end
|
@@ -65,11 +65,11 @@ def check_element_attribute(access_type, attribute_name, attribute_value, access
|
|
65
65
|
|
66
66
|
if test_case
|
67
67
|
if(attr_val!=attribute_value)
|
68
|
-
raise "Attribute Not Matched"
|
68
|
+
raise TestCaseFailed ,"Attribute Value Not Matched"
|
69
69
|
end
|
70
70
|
else
|
71
71
|
if(attr_val==attribute_value)
|
72
|
-
raise "Attribute Matched"
|
72
|
+
raise TestCaseFailed ,"Attribute Value Matched"
|
73
73
|
end
|
74
74
|
end
|
75
75
|
end
|
@@ -83,7 +83,7 @@ end
|
|
83
83
|
def check_element_presence(access_type, access_name, test_case)
|
84
84
|
if test_case
|
85
85
|
if !is_element_displayed(access_type,access_name)
|
86
|
-
raise "
|
86
|
+
raise TestCaseFailed ,"Element Not Present"
|
87
87
|
end
|
88
88
|
else
|
89
89
|
begin
|
@@ -92,45 +92,36 @@ def check_element_presence(access_type, access_name, test_case)
|
|
92
92
|
end
|
93
93
|
rescue Exception => e
|
94
94
|
if e.message=="present"
|
95
|
-
raise "
|
95
|
+
raise TestCaseFailed ,"Element Present"
|
96
96
|
end
|
97
97
|
end
|
98
98
|
end
|
99
99
|
end
|
100
100
|
|
101
|
-
#method to assert checkbox check
|
101
|
+
#method to assert checkbox check/uncheck
|
102
102
|
def is_checkbox_checked(access_type, access_name, should_be_checked=true)
|
103
103
|
checkbox = WAIT.until{$driver.find_element(:"#{access_type}" => "#{access_name}")}
|
104
104
|
|
105
105
|
if !checkbox.selected? && should_be_checked
|
106
|
-
raise "Checkbox not checked"
|
106
|
+
raise TestCaseFailed ,"Checkbox is not checked"
|
107
107
|
elsif checkbox.selected? && !should_be_checked
|
108
|
-
raise "Checkbox is checked"
|
108
|
+
raise TestCaseFailed ,"Checkbox is checked"
|
109
109
|
end
|
110
110
|
end
|
111
111
|
|
112
|
-
#method to assert
|
113
|
-
def is_checkbox_unchecked(access_type, access_name)
|
114
|
-
checkbox = WAIT.until{$driver.find_element(:"#{access_type}" => "#{access_name}")}
|
115
|
-
|
116
|
-
if checkbox.selected?
|
117
|
-
raise "Checkbox checked"
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
#method to assert checkbox check
|
112
|
+
#method to assert radio button selected/unselected
|
122
113
|
def is_radio_button_selected(access_type, access_name, should_be_selected=true)
|
123
114
|
radio_button = WAIT.until{$driver.find_element(:"#{access_type}" => "#{access_name}")}
|
124
115
|
|
125
116
|
if !radio_button.selected? && should_be_selected
|
126
|
-
raise "Radio Button not selected"
|
117
|
+
raise TestCaseFailed ,"Radio Button not selected"
|
127
118
|
elsif radio_button.selected? && !should_be_selected
|
128
|
-
raise "Radio Button is selected"
|
119
|
+
raise TestCaseFailed ,"Radio Button is selected"
|
129
120
|
end
|
130
121
|
end
|
131
122
|
|
132
123
|
|
133
|
-
#method to assert option from radio button group is selected
|
124
|
+
#method to assert option from radio button group is selected/unselected
|
134
125
|
def is_option_from_radio_button_group_selected(access_type, by, option, access_name, should_be_selected=true)
|
135
126
|
radio_button_group = WAIT.until{$driver.find_elements(:"#{access_type}" => "#{access_name}")}
|
136
127
|
|
@@ -138,10 +129,21 @@ def is_option_from_radio_button_group_selected(access_type, by, option, access_n
|
|
138
129
|
|
139
130
|
ele = radio_button_group.find { |rb| getter.call(rb, by) == option }
|
140
131
|
|
141
|
-
if !ele.selected && should_be_selected
|
142
|
-
raise 'Radio button is not selected'
|
143
|
-
elsif ele.selected && !should_be_selected
|
144
|
-
raise 'Radio button is selected'
|
132
|
+
if !ele.selected? && should_be_selected
|
133
|
+
raise TestCaseFailed ,'Radio button is not selected'
|
134
|
+
elsif ele.selected? && !should_be_selected
|
135
|
+
raise TestCaseFailed ,'Radio button is selected'
|
145
136
|
end
|
146
137
|
end
|
147
138
|
|
139
|
+
#method to get javascript pop-up alert text
|
140
|
+
def get_alert_text
|
141
|
+
$driver.switch_to.alert.text
|
142
|
+
end
|
143
|
+
|
144
|
+
#method to check javascript pop-up alert text
|
145
|
+
def check_alert_text text
|
146
|
+
if get_alert_text!=text
|
147
|
+
raise TestCaseFailed , "Text on alert pop up not matched"
|
148
|
+
end
|
149
|
+
end
|
@@ -5,6 +5,10 @@ def click(access_type,access_name)
|
|
5
5
|
element = WAIT.until {$driver.find_element(:"#{access_type}" => "#{access_name}")}.click
|
6
6
|
end
|
7
7
|
|
8
|
+
def click_forcefully(access_type, access_name)
|
9
|
+
$driver.execute_script('arguments[0].click();', WAIT.until {$driver.find_element(:"#{access_type}" => "#{access_name}")})
|
10
|
+
end
|
11
|
+
|
8
12
|
def submit(access_type,access_name)
|
9
13
|
element = WAIT.until {$driver.find_element(:"#{access_type}" => "#{access_name}")}.submit
|
10
14
|
end
|
@@ -58,29 +58,16 @@ end
|
|
58
58
|
|
59
59
|
#method to select option from radio button group
|
60
60
|
def select_option_from_radio_button_group(access_type, by, option, access_name)
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
end
|
75
|
-
else
|
76
|
-
while i<radio_button_group.length
|
77
|
-
if radio_button_group[i].text==option
|
78
|
-
if !radio_button_group[i].selected?
|
79
|
-
radio_button_group[i].click
|
80
|
-
end
|
81
|
-
break
|
82
|
-
end
|
83
|
-
i=i+1
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
61
|
+
|
62
|
+
radio_button_group = WAIT.until{$driver.find_elements(:"#{access_type}" => "#{access_name}")}
|
63
|
+
|
64
|
+
getter = ->(rb, by) { by == 'value' ? rb.attribute('value') : rb.text }
|
65
|
+
|
66
|
+
ele = radio_button_group.find { |rb| puts getter.call(rb, by) }
|
67
|
+
|
68
|
+
if !ele.selected?
|
69
|
+
ele.click
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
|
@@ -1,4 +1,8 @@
|
|
1
1
|
|
2
|
+
#custome exception class
|
3
|
+
class TestCaseFailed < Exception
|
4
|
+
end
|
5
|
+
|
2
6
|
# WAIT instance for explicit wait
|
3
7
|
WAIT = Selenium::WebDriver::Wait.new(:timeout => 30)
|
4
8
|
|
@@ -17,5 +21,5 @@ def valid_option_by? option_by
|
|
17
21
|
end
|
18
22
|
|
19
23
|
def validate_option_by option_by
|
20
|
-
raise "Invalid option by - #{option_by}" unless
|
24
|
+
raise "Invalid option by - #{option_by}" unless valid_option_by? option_by
|
21
25
|
end
|
@@ -2,7 +2,7 @@ require_relative 'required_files'
|
|
2
2
|
|
3
3
|
|
4
4
|
def navigate_to(link)
|
5
|
-
|
5
|
+
$driver.get link
|
6
6
|
end
|
7
7
|
|
8
8
|
def navigate(direction)
|
@@ -14,7 +14,7 @@ def navigate(direction)
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def close_driver
|
17
|
-
$driver.
|
17
|
+
$driver.close
|
18
18
|
end
|
19
19
|
|
20
20
|
def scroll_to_element(access_type,access_name)
|
@@ -56,6 +56,12 @@ def resize_browser(width,heigth)
|
|
56
56
|
$driver.manage.window.resize_to(width,heigth)
|
57
57
|
end
|
58
58
|
|
59
|
+
#Method to hover on element
|
60
|
+
def hover_over_element(access_type,access_name)
|
61
|
+
element = WAIT.until {$driver.find_element(:"#{access_type}" => "#{access_name}")}
|
62
|
+
$driver.action.move_to(element).perform
|
63
|
+
end
|
64
|
+
|
59
65
|
def get_os
|
60
66
|
case CONFIG['host_os']
|
61
67
|
when /mingw32|windows/i
|
@@ -17,8 +17,8 @@ Then(/^I close browser$/) do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
#step to resize browser
|
20
|
-
Then(/^I resize browser
|
21
|
-
resize_browser(width,heigth)
|
20
|
+
Then(/^I resize browser window size to width (\d+) and heigth (\d+)$/) do |width, heigth|
|
21
|
+
resize_browser(width, heigth)
|
22
22
|
end
|
23
23
|
|
24
24
|
#steps to refresh page
|
@@ -26,11 +26,16 @@ Then(/^I refresh page$/) do
|
|
26
26
|
$driver.navigate.refresh
|
27
27
|
end
|
28
28
|
|
29
|
-
|
30
29
|
#steps to scroll to element
|
31
|
-
Then(/^I scroll to
|
30
|
+
Then(/^I scroll to element having (.+) "(.*?)"$/) do |type, access_name|
|
32
31
|
validate_locator type
|
33
|
-
scroll_to_element(type,access_name)
|
32
|
+
scroll_to_element(type, access_name)
|
33
|
+
end
|
34
|
+
|
35
|
+
#Step to hover over a element # Not work on windows firefox
|
36
|
+
When(/^I hover over element having (.+) "(.*?)"$/) do |type, access_name|
|
37
|
+
validate_locator type
|
38
|
+
hover_over_element(type, access_name)
|
34
39
|
end
|
35
40
|
|
36
41
|
#steps to zoom in page
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: selenium-cucumber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-07-
|
12
|
+
date: 2014-07-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: cucumber
|
@@ -59,7 +59,6 @@ files:
|
|
59
59
|
- lib/selenium-cucumber/input_steps.rb
|
60
60
|
- lib/selenium-cucumber/javascript_handling_steps.rb
|
61
61
|
- lib/selenium-cucumber/navigation_steps.rb
|
62
|
-
- lib/selenium-cucumber/press_button_steps.rb
|
63
62
|
- lib/selenium-cucumber/progress_steps.rb
|
64
63
|
- lib/selenium-cucumber/screenshot_steps.rb
|
65
64
|
- lib/selenium-cucumber/version.rb
|
@@ -70,7 +69,6 @@ files:
|
|
70
69
|
- lib/selenium-cucumber/methods/javascript_handling_methods.rb
|
71
70
|
- lib/selenium-cucumber/methods/misc_methods.rb
|
72
71
|
- lib/selenium-cucumber/methods/navigate_methods.rb
|
73
|
-
- lib/selenium-cucumber/methods/press_button_methods.rb
|
74
72
|
- lib/selenium-cucumber/methods/progress_methods.rb
|
75
73
|
- lib/selenium-cucumber/methods/required_files.rb
|
76
74
|
- lib/selenium-cucumber/methods/screenshot_methods.rb
|
@@ -1,19 +0,0 @@
|
|
1
|
-
require_relative 'methods/press_button_methods'
|
2
|
-
|
3
|
-
# click on web element
|
4
|
-
|
5
|
-
When(/^I click on element having (.+) "(.*?)"$/) do |type, access_name|
|
6
|
-
validate_locator type
|
7
|
-
click(type,access_name)
|
8
|
-
end
|
9
|
-
|
10
|
-
|
11
|
-
#steps to click on link
|
12
|
-
|
13
|
-
Then(/^I click on link having text "(.*?)"$/) do |access_name|
|
14
|
-
click("link",access_name)
|
15
|
-
end
|
16
|
-
|
17
|
-
Then(/^I click on link having partial text "(.*?)"$/) do |access_name|
|
18
|
-
click("partial_link_text",access_name)
|
19
|
-
end
|