selenium-cucumber 0.0.2 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (28) hide show
  1. data/doc/canned_steps.md +337 -76
  2. data/doc/installation.md +13 -13
  3. data/features-skeleton/my_first.feature +5 -5
  4. data/features-skeleton/step_definitions/custom_steps.rb +3 -3
  5. data/features-skeleton/support/env.rb +37 -29
  6. data/lib/selenium-cucumber.rb +8 -7
  7. data/lib/selenium-cucumber/assertion_steps.rb +436 -57
  8. data/lib/selenium-cucumber/configuration_steps.rb +7 -0
  9. data/lib/selenium-cucumber/input_steps.rb +322 -0
  10. data/lib/selenium-cucumber/javascript_handling_steps.rb +9 -0
  11. data/lib/selenium-cucumber/methods/assertion_methods.rb +165 -34
  12. data/lib/selenium-cucumber/methods/configuration_methods.rb +9 -0
  13. data/lib/selenium-cucumber/methods/input_methods.rb +87 -0
  14. data/lib/selenium-cucumber/methods/javascript_handling_methods.rb +6 -0
  15. data/lib/selenium-cucumber/methods/navigate_methods.rb +75 -11
  16. data/lib/selenium-cucumber/methods/press_button_methods.rb +6 -6
  17. data/lib/selenium-cucumber/methods/progress_methods.rb +15 -6
  18. data/lib/selenium-cucumber/methods/screenshot_methods.rb +7 -0
  19. data/lib/selenium-cucumber/navigation_steps.rb +104 -9
  20. data/lib/selenium-cucumber/press_button_steps.rb +37 -13
  21. data/lib/selenium-cucumber/progress_steps.rb +58 -0
  22. data/lib/selenium-cucumber/screenshot_steps.rb +5 -0
  23. data/lib/selenium-cucumber/version.rb +1 -1
  24. metadata +19 -11
  25. data/lib/selenium-cucumber/enter_text_steps.rb +0 -27
  26. data/lib/selenium-cucumber/methods/enter_text_methods.rb +0 -14
  27. data/lib/selenium-cucumber/progress_step.rb +0 -17
  28. data/lib/selenium-cucumber/screenshot_step.rb +0 -8
@@ -0,0 +1,9 @@
1
+ require 'rubygems'
2
+ require "selenium-webdriver"
3
+
4
+ #method to print configuration
5
+
6
+ def print_congifugartion
7
+ puts "Configuration : "+$driver.execute_script("return navigator.userAgent;")
8
+ puts "Date and Time : #{Time.now}"
9
+ end
@@ -0,0 +1,87 @@
1
+ require 'rubygems'
2
+ require "selenium-webdriver"
3
+
4
+ # method to enter text into textfield
5
+ def enter_text(access_type,text,access_name)
6
+ $driver.find_element(:"#{access_type}" => "#{access_name}").send_keys text
7
+ end
8
+
9
+ # method to clear text from textfield
10
+ def clear_text(access_type,access_name)
11
+ $driver.find_element(:"#{access_type}" => "#{access_name}").clear
12
+ end
13
+
14
+ # method to select option from dropdwon list
15
+ def select_option_from_dropdown(access_type, by, option, access_name)
16
+ dropdown = $driver.find_element(:"#{access_type}" => "#{access_name}")
17
+ select_list = Selenium::WebDriver::Support::Select.new(dropdown)
18
+ select_list.select_by(:"#{by}", "#{option}")
19
+ end
20
+
21
+ # method to unselect all option from dropdwon list
22
+ def unselect_option_from_dropdown(access_type, access_name)
23
+ dropdown = $driver.find_element(:"#{access_type}" => "#{access_name}")
24
+ select_list = Selenium::WebDriver::Support::Select.new(dropdown)
25
+ select_list.deselect_all()
26
+ end
27
+
28
+ #method to check checkbox
29
+ def check_checkbox(access_type, access_name)
30
+ checkbox = $driver.find_element(:"#{access_type}" => "#{access_name}")
31
+
32
+ if !checkbox.selected?
33
+ checkbox.click
34
+ end
35
+ end
36
+
37
+ #method to uncheck checkbox
38
+ def uncheck_checkbox(access_type, access_name)
39
+ checkbox = $driver.find_element(:"#{access_type}" => "#{access_name}")
40
+
41
+ if checkbox.selected?
42
+ checkbox.click
43
+ end
44
+ end
45
+
46
+ #method to select radio button
47
+ def toggle_checkbox(access_type, access_name)
48
+ $driver.find_element(:"#{access_type}" => "#{access_name}").click
49
+ end
50
+
51
+ #method to select radio button
52
+ def select_radio_button(access_type, access_name)
53
+ radio_button = $driver.find_element(:"#{access_type}" => "#{access_name}")
54
+
55
+ if !radio_button.selected?
56
+ radio_button.click
57
+ end
58
+ end
59
+
60
+ #method to select option from radio button group
61
+ def select_option_from_radio_button_group(access_type, by, option, access_name)
62
+ radio_button_group = $driver.find_elements(:"#{access_type}" => "#{access_name}")
63
+
64
+ i=0
65
+
66
+ if by=="value"
67
+ while i<radio_button_group.length
68
+ if radio_button_group[i].attribute("value")==option
69
+ if !radio_button_group[i].selected?
70
+ radio_button_group[i].click
71
+ end
72
+ break
73
+ end
74
+ i=i+1
75
+ end
76
+ else
77
+ while i<radio_button_group.length
78
+ if radio_button_group[i].text==option
79
+ if !radio_button_group[i].selected?
80
+ radio_button_group[i].click
81
+ end
82
+ break
83
+ end
84
+ i=i+1
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,6 @@
1
+ require 'rubygems'
2
+ require "selenium-webdriver"
3
+
4
+ def handle_alert "decesion"
5
+ $driver.switch_to.alert.decesion
6
+ end
@@ -1,11 +1,75 @@
1
- require 'rubygems'
2
- require "selenium-webdriver"
3
-
4
-
5
- def navigate_to(link)
6
- $driver.get link
7
- end
8
-
9
- def close_driver
10
- $driver.quit
11
- end
1
+ require 'rubygems'
2
+ require "selenium-webdriver"
3
+
4
+
5
+ def navigate_to(link)
6
+ $driver.get link
7
+ end
8
+
9
+ def navigate(direction)
10
+ $driver.navigate.direction
11
+ end
12
+
13
+ def close_driver
14
+ $driver.quit
15
+ end
16
+
17
+ def scroll_to_element(access_type,access_name)
18
+ ele_scroll = $driver.find_element(:"#{access_type}" => "#{access_name}")
19
+ ele_scroll.location_once_scrolled_into_view
20
+ end
21
+
22
+ def zoom_in_out(in_out)
23
+ if get_os=="windows"
24
+ key="control"
25
+ elsif get_os=="mac"
26
+ key="command"
27
+ end
28
+
29
+ $driver.action.key_down(:"#{key}").send_keys(:"#{in_out}").key_up(:"#{key}").perform
30
+ end
31
+
32
+
33
+ def zoom_in_out_till_element_display(access_type, in_out, access_name)
34
+
35
+ if get_os=="windows"
36
+ key="control"
37
+ elsif get_os=="mac"
38
+ key="command"
39
+ end
40
+
41
+ while true
42
+
43
+ if $driver.find_element(:"#{access_type}" => "#{access_name}").displayed?
44
+ break
45
+ else
46
+ $driver.action.key_down(:"#{key}").send_keys(:"#{in_out}").key_up(:"#{key}").perform
47
+ end
48
+ end
49
+
50
+ end
51
+
52
+
53
+ def get_os
54
+ case CONFIG['host_os']
55
+ when /mingw32|windows/i
56
+ # Windows
57
+ return "windows"
58
+ when /linux|arch/i
59
+ # Linux
60
+ return "linux"
61
+ when /sunos|solaris/i
62
+ # Solaris
63
+ return "solaris"
64
+ when /darwin/i
65
+ #MAC OS X
66
+ return "mac"
67
+ else
68
+ # whatever
69
+ return "Other"
70
+ end
71
+ end
72
+
73
+ def resize_browser(width,heigth)
74
+ $driver.manage.window.resize_to(width,heigth)
75
+ end
@@ -1,6 +1,6 @@
1
- require 'rubygems'
2
- require "selenium-webdriver"
3
-
4
- def click(access_type,access_name)
5
- element = $driver.find_element(:"#{access_type}" => "#{access_name}").click
6
- end
1
+ require 'rubygems'
2
+ require "selenium-webdriver"
3
+
4
+ def click(access_type,access_name)
5
+ element = $driver.find_element(:"#{access_type}" => "#{access_name}").click
6
+ end
@@ -1,7 +1,16 @@
1
- require 'rubygems'
2
- require "selenium-webdriver"
3
-
4
- def wait_for_element(access_type,access_id)
5
- wait = Selenium::WebDriver::Wait.new(:timeout => 10) # seconds
6
- element = wait.until { $driver.find_element(:"#{access_type}" => "#{access_id}") }
1
+ require 'rubygems'
2
+ require "selenium-webdriver"
3
+
4
+ def wait(time)
5
+ sleep time.to_i
6
+ end
7
+
8
+ def wait_for_element_to_display(access_type,access_name,duration)
9
+ wait = Selenium::WebDriver::Wait.new(:timeout => duration.to_i) # seconds
10
+ wait.until { $driver.find_element(:"#{access_type}" => "#{access_name}").displayed? }
11
+ end
12
+
13
+ def wait_for_element_to_enable(access_type,access_name,duration)
14
+ wait = Selenium::WebDriver::Wait.new(:timeout => duration.to_i) # seconds
15
+ wait.until { $driver.find_element(:"#{access_type}" => "#{access_name}").enabled? }
7
16
  end
@@ -0,0 +1,7 @@
1
+ require 'rubygems'
2
+ require "selenium-webdriver"
3
+
4
+ def take_screenshot
5
+ curTime = Time.now.strftime('%Y%m%d%H%M%S%L')
6
+ $driver.save_screenshot('./screenshot'+curTime+'.png')
7
+ end
@@ -1,9 +1,104 @@
1
- require_relative 'methods/navigate_methods'
2
-
3
- Then(/^I navigate to "([^\"]*)"$/)do |link|
4
- navigate_to(link)
5
- end
6
-
7
- Then(/^I close browser$/) do
8
- close_driver
9
- end
1
+ require_relative 'methods/navigate_methods'
2
+
3
+ Then(/^I navigate to "([^\"]*)"$/)do |link|
4
+ navigate_to(link)
5
+ end
6
+
7
+ Then(/^I navigate forward/) do
8
+ navigate("forward")
9
+ end
10
+
11
+ Then(/^I navigate back/) do
12
+ navigate("back")
13
+ end
14
+
15
+ Then(/^I close browser$/) do
16
+ close_driver
17
+ end
18
+
19
+ #step to resize browser
20
+ Then(/^I resize browser with width (\d+) and heigth (\d+)$/) do |width, heigth|
21
+ resize_browser(width,heigth)
22
+ end
23
+
24
+ #steps to refresh page
25
+ Then(/^I refresh page$/) do
26
+ $driver.navigate.refresh
27
+ end
28
+
29
+ #steps to scroll to element
30
+ Then(/^I scroll to the element having id "(.*?)"$/) do |access_name|
31
+ scroll_to_element("id",access_name)
32
+ end
33
+
34
+ Then(/^I scroll to the element having name "(.*?)"$/) do |access_name|
35
+ scroll_to_element("name",access_name)
36
+ end
37
+
38
+ Then(/^I scroll to the element having class "(.*?)"$/) do |access_name|
39
+ scroll_to_element("class",access_name)
40
+ end
41
+
42
+ Then(/^I scroll to the element having xpath "(.*?)"$/) do |access_name|
43
+ scroll_to_element("xpath",access_name)
44
+ end
45
+
46
+ Then(/^I scroll to the element having css "(.*?)"$/) do |access_name|
47
+ scroll_to_element("css",access_name)
48
+ end
49
+
50
+ #steps to zoom in page
51
+ Then(/^I zoom in page$/) do
52
+ zoom_in_out("add")
53
+ end
54
+
55
+ #steps to zoom out page
56
+ Then(/^I zoom out page$/) do
57
+ zoom_in_out("subtract")
58
+ end
59
+
60
+ #steps to zoom in till element displays
61
+ Then(/^I zoom in page till I see element having id "(.*?)"$/) do |access_name|
62
+ zoom_in_out_till_element_display("id", "add", access_name)
63
+ end
64
+
65
+ Then(/^I zoom in page till I see element having name "(.*?)"$/) do |access_name|
66
+ zoom_in_out_till_element_display("name", "add", access_name)
67
+ end
68
+
69
+ Then(/^I zoom in page till I see element having class "(.*?)"$/) do |access_name|
70
+ zoom_in_out_till_element_display("class", "add", access_name)
71
+ end
72
+
73
+ Then(/^I zoom in page till I see element having xpath "(.*?)"$/) do |access_name|
74
+ zoom_in_out_till_element_display("xpath", "add", access_name)
75
+ end
76
+
77
+ Then(/^I zoom in page till I see element having css "(.*?)"$/) do |access_name|
78
+ zoom_in_out_till_element_display("css", "add", access_name)
79
+ end
80
+
81
+ #steps to zoom out till element displays
82
+ Then(/^I zoom out page till I see element having id "(.*?)"$/) do |access_name|
83
+ zoom_in_out_till_element_display("id", "subtract", access_name)
84
+ end
85
+
86
+ Then(/^I zoom out page till I see element having name "(.*?)"$/) do |access_name|
87
+ zoom_in_out_till_element_display("name", "subtract", access_name)
88
+ end
89
+
90
+ Then(/^I zoom out page till I see element having class "(.*?)"$/) do |access_name|
91
+ zoom_in_out_till_element_display("class", "subtract", access_name)
92
+ end
93
+
94
+ Then(/^I zoom out page till I see element having xpath "(.*?)"$/) do |access_name|
95
+ zoom_in_out_till_element_display("xpath", "subtract", access_name)
96
+ end
97
+
98
+ Then(/^I zoom out page till I see element having css "(.*?)"$/) do |access_name|
99
+ zoom_in_out_till_element_display("css", "subtract", access_name)
100
+ end
101
+
102
+ Then(/^I reset page view$/) do
103
+ zoom_in_out("numpad0")
104
+ end
@@ -1,13 +1,37 @@
1
- require_relative 'methods/press_button_methods'
2
-
3
- When(/^I click on element with id "(.*?)"$/) do |element_id|
4
- click("id",element_id)
5
- end
6
-
7
- When(/^I click on element with name "(.*?)"$/) do |element_name|
8
- click("name",element_name)
9
- end
10
-
11
- When(/^I click on element with xpath "(.*?)"$/) do |element_xpath|
12
- click("xpath",element_xpath)
13
- end
1
+ require_relative 'methods/press_button_methods'
2
+
3
+ # click on web element
4
+ #By ID
5
+ When(/^I click on element having id "(.*?)"$/) do |access_name|
6
+ click("id",access_name)
7
+ end
8
+
9
+ #By NAME
10
+ When(/^I click on element having name "(.*?)"$/) do |access_name|
11
+ click("name",access_name)
12
+ end
13
+
14
+ #By CLASS
15
+ When(/^I click on element having class "(.*?)"$/) do |access_name|
16
+ click("class",access_name)
17
+ end
18
+
19
+ #By XPATH
20
+ When(/^I click on element having xpath "(.*?)"$/) do |access_name|
21
+ click("xpath",access_name)
22
+ end
23
+
24
+ #By CSS
25
+ When(/^I click on element having css "(.*?)"$/) do |access_name|
26
+ click("css",access_name)
27
+ end
28
+
29
+ #steps to click on link
30
+
31
+ Then(/^I click on link having text "(.*?)"$/) do |access_name|
32
+ click("link",access_name)
33
+ end
34
+
35
+ Then(/^I click on link having partial text "(.*?)"$/) do |access_name|
36
+ click("partial_link_text",access_name)
37
+ end
@@ -0,0 +1,58 @@
1
+ require_relative 'methods/progress_methods'
2
+
3
+ # wait for specific period of time
4
+ Then(/^I wait for (\d+) sec$/) do |time|
5
+ wait(time)
6
+ end
7
+
8
+ # wait for specific element to display for specific period of time
9
+ #By ID
10
+ Then(/^I wait (\d+) seconds for element to display having id "(.*?)"$/) do |duration, access_name|
11
+ wait_for_element_to_display("id",access_name,duration)
12
+ end
13
+
14
+ #By NAME
15
+ Then(/^I wait (\d+) seconds for element to display having name "(.*?)"$/) do |duration, access_name|
16
+ wait_for_element_to_display("name",access_name,duration)
17
+ end
18
+
19
+ #By CLASS
20
+ Then(/^I wait (\d+) seconds for element to display having class "(.*?)"$/) do |duration, access_name|
21
+ wait_for_element_to_display("class",access_name,duration)
22
+ end
23
+
24
+ #By XPATH
25
+ Then(/^I wait (\d+) seconds for element to display having xpath "(.*?)"$/) do |duration, access_name|
26
+ wait_for_element_to_display("xpath",access_name,duration)
27
+ end
28
+
29
+ #By CSS
30
+ Then(/^I wait (\d+) seconds for element to display having css "(.*?)"$/) do |duration, access_name|
31
+ wait_for_element_to_display("css",access_name,duration)
32
+ end
33
+
34
+ # wait for specific element to enable for specific period of time
35
+ #By ID
36
+ Then(/^I wait (\d+) seconds for element to enable having id "(.*?)"$/) do |duration, access_name|
37
+ wait_for_element_to_enable("id",access_name,duration)
38
+ end
39
+
40
+ #By NAME
41
+ Then(/^I wait (\d+) seconds for element to enable having name "(.*?)"$/) do |duration, access_name|
42
+ wait_for_element_to_enable("name",access_name,duration)
43
+ end
44
+
45
+ #By CLASS
46
+ Then(/^I wait (\d+) seconds for element to enable having class "(.*?)"$/) do |duration, access_name|
47
+ wait_for_element_to_enable("class",access_name,duration)
48
+ end
49
+
50
+ #By XPATH
51
+ Then(/^I wait (\d+) seconds for element to enable having xpath "(.*?)"$/) do |duration, access_name|
52
+ wait_for_element_to_enable("xpath",access_name,duration)
53
+ end
54
+
55
+ #By CSS
56
+ Then(/^I wait (\d+) seconds for element to enable having css "(.*?)"$/) do |duration, access_name|
57
+ wait_for_element_to_enable("css",access_name,duration)
58
+ end