selenium-cucumber 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
data/doc/installation.md CHANGED
@@ -1,13 +1,16 @@
1
- Installation
2
- ============
3
- ### Prerequisites
4
- You need to have Ruby installed. Verify your installation by running ruby -v in a terminal - it should print "ruby 1.8.7" (or higher).
5
-
6
- If you are on Windows you can get Ruby from [RubyInstaller.org](http://rubyinstaller.org/)
7
-
8
- ### Installation
9
-
10
- Install `selenium-cucumber` by running
11
-
12
- - `gem install selenium-cucumber`
13
- - You might have to run `sudo gem install selenium-cucumber` if you do not have the right permissions.
1
+ Installation
2
+ ============
3
+ ### Prerequisites
4
+ You need to have Ruby installed.
5
+ Verify your installation by running ruby -v in a terminal - it should print "ruby 1.9.3" (or higher).
6
+
7
+ You need to have DevKit installed.
8
+
9
+ You can get Ruby and DevKit from [RubyInstaller.org](http://rubyinstaller.org/)
10
+
11
+ ### Installation
12
+
13
+ Install `selenium-cucumber` gem by running
14
+
15
+ - `gem install selenium-cucumber`
16
+
@@ -1,79 +1,82 @@
1
- selenium-cucumber API
2
- =====================
3
-
4
- If you are writing code for your custom steps you can use following methods
5
-
6
-
7
- Navigation API's
8
- ----------------
9
-
10
- navigate_to(link)
11
-
12
- navigate(direction) # direction=back or direction=forword
13
-
14
- close_driver()
15
-
16
-
17
- Browser Interaction API's
18
- -------------------------
19
-
20
- resize_browser(width,heigth)
21
-
22
- scroll_to_element(by,access_value)
23
-
24
- zoom_in_out(in_out)
25
-
26
- zoom_in_out_till_element_display(by, in_out, access_value)
27
-
28
-
29
- Input API's
30
- ------------
31
-
32
- click(by,access_value)
33
-
34
- submit(by,access_value)
35
-
36
- enter_text(by,text,access_value)
37
-
38
- clear_text(by,access_value)
39
-
40
- check_checkbox(by, access_value)
41
-
42
- uncheck_checkbox(by, access_value)
43
-
44
- toggle_checkbox(by, access_value)
45
-
46
- select_radio_button(by, access_value)
47
-
48
- get_page_title()
49
-
50
- get_element_text(by,access_value)
51
-
52
- get_element_attribute(by,access_value,attribute)
53
-
54
- is_element_enabled(by,access_value)
55
-
56
- is_element_displayed(by,access_value)
57
-
58
-
59
- Javascript Handling API
60
- -----------------------
61
-
62
- handle_alert(decesion) # accept or dismiss
63
-
64
- get_alert_text
65
-
66
-
67
- Progress API's
68
- --------------
69
-
70
- wait(time_in_sec)
71
-
72
- wait_for_element_to_display(by,access_value,duration)
73
-
74
- wait_for_element_to_enable(by,access_value,duration)
75
-
76
-
77
- Screenshot API
78
- --------------
1
+ selenium-cucumber API
2
+ =====================
3
+
4
+ If you are writing code for your custom steps you can use the following methods :
5
+
6
+ Note : For some of the API paramtere values are fixed. Such values for paramaters are mentioned below.
7
+
8
+ Navigation API's
9
+ ----------------
10
+
11
+ navigate_to(link)
12
+
13
+ navigate(direction) # direction => "back"/"forward"
14
+
15
+ close_driver()
16
+
17
+
18
+ Browser Interaction API's
19
+ -------------------------
20
+
21
+ resize_browser(width,height)
22
+
23
+ scroll_page(to) # to => "top"/"end"
24
+
25
+ scroll_to_element(by,access_value)
26
+
27
+ zoom_in_out(in_out) # in_out => "add"/"subtract"
28
+
29
+ zoom_in_out_till_element_display(by, in_out, access_value) # in_out => "add"/"subtract"
30
+
31
+
32
+ Input API's
33
+ ------------
34
+
35
+ click(by,access_value)
36
+
37
+ submit(by,access_value)
38
+
39
+ enter_text(by,text,access_value)
40
+
41
+ clear_text(by,access_value)
42
+
43
+ check_checkbox(by, access_value)
44
+
45
+ uncheck_checkbox(by, access_value)
46
+
47
+ toggle_checkbox(by, access_value)
48
+
49
+ select_radio_button(by, access_value)
50
+
51
+ get_page_title()
52
+
53
+ get_element_text(by,access_value)
54
+
55
+ get_element_attribute(by,access_value,attribute)
56
+
57
+ is_element_enabled(by,access_value)
58
+
59
+ is_element_displayed(by,access_value)
60
+
61
+
62
+ Javascript Handling API
63
+ -----------------------
64
+
65
+ handle_alert(decision) # decision => "accept"/"dismiss"
66
+
67
+ get_alert_text
68
+
69
+
70
+ Progress API's
71
+ --------------
72
+
73
+ wait(time_in_sec)
74
+
75
+ wait_for_element_to_display(by,access_value,duration)
76
+
77
+ wait_for_element_to_enable(by,access_value,duration)
78
+
79
+
80
+ Screenshot API
81
+ --------------
79
82
  take_screenshots
@@ -1,18 +1,18 @@
1
-
2
- Usage: selenium-cucumber <command-name> [parameters] [options]
3
-
4
- <command-name> can be one of
5
- help
6
- gen
7
- version
8
-
9
- Commands:
10
- help : prints more detailed help information.
11
-
12
- gen : creates a skeleton features dir. This is usually used once when
13
- setting up selnium-cucumber to ensure that the features folder contains
14
- the right step definitions and environment to run with cucumber.
15
-
16
- version : prints the gem version
17
-
18
- Options: -v, --verbose Turns on verbose logging
1
+
2
+ Usage: selenium-cucumber <command-name> [parameters] [options]
3
+
4
+ <command-name> can be one of
5
+ help
6
+ gen
7
+ version
8
+
9
+ Commands:
10
+ help : prints more detailed help information.
11
+
12
+ gen : creates a skeleton features dir. This is usually used once when
13
+ setting up selnium-cucumber to ensure that the features folder contains
14
+ the right step definitions and environment to run with cucumber.
15
+
16
+ version : prints the gem version
17
+
18
+ Options: -v, --verbose Turns on verbose logging
@@ -1,5 +1,5 @@
1
- Feature: Login feature
2
-
3
- Scenario: As a valid user I can log into my web app
4
- When I press "Login"
5
- Then I see "Welcome to coolest web app ever"
1
+ Feature: Login feature
2
+
3
+ Scenario: As a valid user I can log into my web app
4
+ When I press "Login"
5
+ Then I see "Welcome to coolest web app ever"
@@ -1,5 +1,5 @@
1
- require 'selenium-cucumber'
2
-
3
- # Do Not Remove This File
4
- # Add your custom steps here
1
+ require 'selenium-cucumber'
2
+
3
+ # Do Not Remove This File
4
+ # Add your custom steps here
5
5
  # $driver is instance of webdriver use this instance to write your custom code
@@ -1,38 +1,38 @@
1
- require 'rubygems'
2
- require 'selenium-webdriver'
3
-
4
- def print_error
5
- puts "\nInappropraite browser \"#{ENV['BROWSER']}\""
6
- puts "\nUsage : cucumber BROWSER=browser_name"
7
- puts "\nbrowser_name can be one of following :"
8
- puts "1.ie\n2.chrome\n3.ff\n4.safari\n5.opera"
9
- puts "\nNow using default browser \"Firefox\""
10
- end
11
-
12
- case ENV['BROWSER']
13
- when 'ie'
14
- browser_type = :ie
15
- when 'ff'
16
- browser_type = :ff
17
- when 'chrome'
18
- browser_type = :chrome
19
- when 'opera'
20
- browser_type = :opera
21
- when 'safari'
22
- browser_type = :safari
23
- else
24
- if ENV['BROWSER']
25
- print_error
26
- end
27
- browser_type = :ff
28
- end
29
-
30
-
31
- begin
32
- $driver = Selenium::WebDriver.for(browser_type)
33
- $driver.manage().window().maximize()
34
-
35
- rescue Exception => e
36
- puts e.message
37
- end
38
-
1
+ require 'rubygems'
2
+ require 'selenium-webdriver'
3
+
4
+ def print_error
5
+ puts "\nInappropraite browser \"#{ENV['BROWSER']}\""
6
+ puts "\nUsage : cucumber BROWSER=browser_name"
7
+ puts "\nbrowser_name can be one of following :"
8
+ puts "1.ie\n2.chrome\n3.ff\n4.safari\n5.opera"
9
+ puts "\nNow using default browser \"Firefox\""
10
+ end
11
+
12
+ case ENV['BROWSER']
13
+ when 'ie'
14
+ browser_type = :ie
15
+ when 'ff'
16
+ browser_type = :ff
17
+ when 'chrome'
18
+ browser_type = :chrome
19
+ when 'opera'
20
+ browser_type = :opera
21
+ when 'safari'
22
+ browser_type = :safari
23
+ else
24
+ if ENV['BROWSER']
25
+ print_error
26
+ end
27
+ browser_type = :ff
28
+ end
29
+
30
+
31
+ begin
32
+ $driver = Selenium::WebDriver.for(browser_type)
33
+ $driver.manage().window().maximize()
34
+
35
+ rescue Exception => e
36
+ puts e.message
37
+ end
38
+
@@ -1,34 +1,34 @@
1
- #Cucumber provides a number of hooks which allow us to run blocks at various points in the Cucumber test cycle
2
-
3
- Before do
4
- # Do something before each scenario.
5
- end
6
-
7
- Before do |scenario|
8
- # The +scenario+ argument is optional, but if you use it, you can get the title,
9
- # description, or name (title + description) of the scenario that is about to be
10
- # executed.
11
- end
12
-
13
- After do |scenario|
14
- # Do something after each scenario.
15
- # The +scenario+ argument is optional, but
16
- # if you use it, you can inspect status with
17
- # the #failed?, #passed? and #exception methods.
18
-
19
- if(scenario.failed?)
20
- #Do something if scenario fails.
21
- end
22
- end
23
-
24
- #Tagged hooks
25
-
26
- Before('@Ex_tag1, @Ex_tag2') do
27
- # This will only run before scenarios tagged
28
- # with @cucumis OR @sativus.
29
- end
30
-
31
- AfterStep('@Ex_tag1, @Ex_tag2') do
32
- # This will only run after steps within scenarios tagged
33
- # with @cucumis AND @sativus.
1
+ #Cucumber provides a number of hooks which allow us to run blocks at various points in the Cucumber test cycle
2
+
3
+ Before do
4
+ # Do something before each scenario.
5
+ end
6
+
7
+ Before do |scenario|
8
+ # The +scenario+ argument is optional, but if you use it, you can get the title,
9
+ # description, or name (title + description) of the scenario that is about to be
10
+ # executed.
11
+ end
12
+
13
+ After do |scenario|
14
+ # Do something after each scenario.
15
+ # The +scenario+ argument is optional, but
16
+ # if you use it, you can inspect status with
17
+ # the #failed?, #passed? and #exception methods.
18
+
19
+ if(scenario.failed?)
20
+ #Do something if scenario fails.
21
+ end
22
+ end
23
+
24
+ #Tagged hooks
25
+
26
+ Before('@Ex_tag1, @Ex_tag2') do
27
+ # This will only run before scenarios tagged
28
+ # with @cucumis OR @sativus.
29
+ end
30
+
31
+ AfterStep('@Ex_tag1, @Ex_tag2') do
32
+ # This will only run after steps within scenarios tagged
33
+ # with @cucumis AND @sativus.
34
34
  end
@@ -1,2 +1,2 @@
1
-
2
- Dir[File.dirname(__FILE__) + '/selenium-cucumber/*.rb'].each {|file| require file }
1
+
2
+ Dir[File.dirname(__FILE__) + '/selenium-cucumber/*.rb'].each {|file| require file }
@@ -13,9 +13,9 @@ Then(/^element having (.+) "([^\"]*)" should\s*((?:not)?)\s+have text as "(.*?)"
13
13
  end
14
14
 
15
15
  #Step to check attribute value
16
- Then(/^I should\s*((?:not)?)\s+see attribute "(.*?)" having value "(.*?)" for element having (.+) "(.*?)"$/) do |present, name , value , type, access_name|
16
+ Then(/^element having (.+) "([^\"]*)" should\s*((?:not)?)\s+have attribute "(.*?)" with value "(.*?)"$/) do |type, access_name, present, attrb, value|
17
17
  validate_locator type
18
- check_element_attribute(type, name, value, access_name, present.empty?)
18
+ check_element_attribute(type, attrb, value, access_name, present.empty?)
19
19
  end
20
20
 
21
21
  #Step to check element enabled or not
@@ -27,7 +27,7 @@ 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(/^element having (.+) "([^\"]*)" should\s*((?:not)?)\s+be present"$/) do |type, access_name, present|
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
@@ -42,7 +42,7 @@ end
42
42
  #steps to assert radio button checked or unchecked
43
43
  Then(/^radio button having (.+) "(.*?)" should be (selected|unselected)$/) do |type, access_name, state|
44
44
  validate_locator type
45
- flag = state == "checked"
45
+ flag = state == "selected"
46
46
  is_radio_button_selected(type, access_name, flag)
47
47
  end
48
48
 
@@ -66,4 +66,11 @@ end
66
66
 
67
67
  Then(/^I should see alert text as "(.*?)"$/) do |actual_value|
68
68
  check_alert_text(actual_value)
69
+ end
70
+
71
+ #Step tp assert dropdown list
72
+ Then(/^option "(.*?)" by (.+) from dropdown having (.+) "(.*?)" should be (selected|unselected)$/) do |option, by, type, access_name, state|
73
+ validate_locator type
74
+ flag = state == "selected"
75
+ is_option_from_dropdown_selected(type,by,option,access_name,state)
69
76
  end
@@ -1,73 +1,69 @@
1
1
  require_relative 'methods/input_methods'
2
2
 
3
3
  #enter text into input field steps
4
-
5
4
  Then(/^I enter "([^\"]*)" into input field having (.+) "([^\"]*)"$/) do |text, type, access_name|
6
5
  validate_locator type
7
6
  enter_text(type,text,access_name)
8
7
  end
9
8
 
10
-
11
9
  #clear input field steps
12
-
13
10
  Then(/^I clear input field having (.+) "([^\"]*)"$/) do |type, access_name|
14
11
  validate_locator type
15
12
  clear_text(type, access_name)
16
13
  end
17
14
 
18
-
19
- #select option by text from dropdown/multiselect
20
-
21
- Then(/^I select "(.*?)" option by (.+) from dropdown having (.+) "(.*?)"$/) do |option,option_by, type, access_name|
15
+ #select option by text/value from dropdown/multiselect
16
+ Then(/^I select "(.*?)" option by (.+) from\s*((?:multiselect)?)\sdropdown having (.+) "(.*?)"$/) do |option,option_by, present, type, access_name|
22
17
  validate_locator type
23
18
  validate_option_by option_by
24
19
  select_option_from_dropdown(type, option_by,option,access_name)
25
20
  end
26
21
 
22
+ #select option by index from dropdown/multiselect
23
+ Then(/^I select (\d+) option by index from\s*((?:multiselect)?)\sdropdown having (.+) "(.*?)"$/) do |option, present, type, access_name|
24
+ validate_locator type
25
+ select_option_from_dropdown(type, "index", (option.to_i)-1, access_name)
26
+ end
27
27
 
28
- #unselect option from dropdown list
29
-
30
- Then(/^I unselect options from dropdown having (.+) "(.*?)"$/) do |type,access_name|
31
- validate_locator type
32
- unselect_option_from_dropdown(type, access_name)
28
+ #step to select option from mutliselect dropdown list
29
+ Then(/^I select all options from multiselect dropdown having (.+) "(.*?)"$/) do |type, access_name|
30
+ validate_locator type
31
+ select_all_option_from_multiselect_dropdown(type, access_name)
33
32
  end
34
33
 
34
+ #step to unselect option from mutliselect dropdown list
35
+ Then(/^I unselect all options from multiselect dropdown having (.+) "(.*?)"$/) do |type,access_name|
36
+ validate_locator type
37
+ unselect_all_option_from_multiselect_dropdown(type, access_name)
38
+ end
35
39
 
36
40
  #check checkbox steps
37
-
38
- Then(/^I check checkbox having (.+) "(.*?)"$/) do |type, access_name|
41
+ Then(/^I check the checkbox having (.+) "(.*?)"$/) do |type, access_name|
39
42
  validate_locator type
40
43
  check_checkbox(type, access_name)
41
44
  end
42
45
 
43
46
  #uncheck checkbox steps
44
-
45
- Then(/^I uncheck checkbox having (.+) "(.*?)"$/) do |type, access_name|
47
+ Then(/^I uncheck the checkbox having (.+) "(.*?)"$/) do |type, access_name|
46
48
  validate_locator type
47
49
  uncheck_checkbox(type,access_name)
48
50
  end
49
51
 
50
-
51
52
  #Steps to toggle checkbox
52
-
53
53
  Then(/^I toggle checkbox having (.+) "(.*?)"$/) do |type, access_name|
54
54
  validate_locator type
55
55
  toggle_checkbox(type,access_name)
56
56
  end
57
57
 
58
-
59
- #radio button select step
60
-
58
+ #step to select radio button
61
59
  Then(/^I select radio button having (.+) "(.*?)"$/) do |type,access_name|
62
60
  validate_locator type
63
61
  select_radio_button(type,access_name)
64
62
  end
65
63
 
66
-
67
64
  #steps to select option by text from radio button group
68
-
69
65
  Then(/^I select "(.*?)" option by (.+) from radio button group having (.+) "(.*?)"$/) do |option,option_by, type, access_name|
70
66
  validate_locator type
71
67
  validate_option_by option_by
72
68
  select_option_from_radio_button_group(type,option_by,option,access_name)
73
- end
69
+ end