watir_keyword_driver 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,48 @@
1
+ require 'roo'
2
+
3
+ class ExcelReader
4
+ @workbook
5
+
6
+ def initialize(file_path)
7
+ puts "Opening Excel at #{file_path}"
8
+ @workbook = Roo::Excelx.new(file_path)
9
+ @workbook.default_sheet = @workbook.sheets[0]
10
+ end
11
+
12
+ def get_workbook
13
+ return @workbook
14
+ end
15
+
16
+ def find_header
17
+ @headers = Hash.new
18
+ puts "finding excel header"
19
+ @workbook.row(1).each_with_index {|header,i|
20
+ @headers[header] = i
21
+ }
22
+ return @headers
23
+ end
24
+
25
+ def print_data
26
+ headers = find_header
27
+ ((@workbook.first_row + 1)..@workbook.last_row).each do |row|
28
+ # Get the column data using the column heading.
29
+ run = @workbook.row(row)[headers['run']]
30
+ keyword = @workbook.row(row)[headers['keyword']]
31
+ object = @workbook.row(row)[headers['object']]
32
+ property = @workbook.row(row)[headers['property']]
33
+ value = @workbook.row(row)[headers['value']]
34
+ comments = @workbook.row(row)[headers['comments']]
35
+
36
+ print "Run: #{run}, #{keyword}, #{object}, #{property}, #{value}, #{comments}}\n\n"
37
+ end
38
+ end
39
+
40
+
41
+ end
42
+ # excel = ExcelReader.new("/home/pratik/study/UIAutomation/WatirScript.xlsx")
43
+ # headers = excel.find_header
44
+ # headers.each do |key, value|
45
+ # puts "#{key}-----"
46
+ # puts "#{value}"
47
+ # end
48
+ # excel.print_data
@@ -0,0 +1,39 @@
1
+ require 'test/unit'
2
+
3
+ class RubyReport < Test::Unit::TestCase
4
+
5
+ @@no_of_assertion =0
6
+ @@no_of_pass = 0
7
+ @@no_of_fail = 0
8
+
9
+
10
+ def initialize
11
+
12
+ end
13
+
14
+ def assert_equal(actual,expected,msg)
15
+ @@no_of_assertion += 1
16
+ begin
17
+ puts super(expected, actual, msg)
18
+ puts "PASS ----- #{msg}"
19
+ @@no_of_pass += 1
20
+ rescue MiniTest::Assertion
21
+ @@no_of_fail += 1
22
+ puts "FAIL ----- #{msg}" # make screenshot here
23
+ end
24
+
25
+ end
26
+
27
+ def total_no_of_assertion
28
+ return @@no_of_assertion
29
+ end
30
+
31
+ def total_no_of_pass
32
+ return @@no_of_pass
33
+ end
34
+
35
+ def total_no_of_fail
36
+ return @@no_of_fail
37
+ end
38
+
39
+ end
@@ -0,0 +1,64 @@
1
+ class RubyUtility
2
+
3
+ def initialize
4
+ @var_hash = Hash.new
5
+ end
6
+ def get_string_upcase(str)
7
+ return String.new("#{str}").upcase.strip
8
+ end
9
+
10
+ def get_string_trim(str)
11
+ return String.new("#{str}").strip
12
+ end
13
+
14
+ def get_property(str)
15
+ if "#{str}"!=""
16
+ prop = String.new("#{str}")
17
+ return prop.split('=',2)
18
+ end
19
+ end
20
+
21
+ def get_str_concat(str)
22
+ if "#{str}"!=""
23
+ new_str = String.new("")
24
+ str_list = str.split(",")
25
+ for index in 0 ... str_list.size
26
+ str_temp = "#{str_list[index].inspect}"
27
+ # if(str_temp[1,1]=="@")
28
+ # str_add = get_hash_value(str_temp[2..-2])
29
+ # else
30
+ # str_add = str_temp[1..-2]
31
+ # end
32
+ str_add = get_hash_value(str_temp[1..-2])
33
+ new_str = new_str+str_add
34
+ puts new_str
35
+ end
36
+
37
+ end
38
+ return new_str
39
+ end
40
+
41
+ def get_value(str)
42
+ if "#{str}"!=""
43
+ prop = String.new("#{str}")
44
+ return prop.split('<>',2)
45
+ end
46
+ end
47
+
48
+ def create_hash(key,value)
49
+ prop_key = :"#{key}"
50
+ @var_hash[prop_key] = "#{value}"
51
+ return @var_hash
52
+ end
53
+
54
+ def get_hash_value(key)
55
+ prop_key = :"#{key}"
56
+ if @var_hash.key?(prop_key)
57
+ return @var_hash[prop_key]
58
+ else
59
+ return "#{key}"
60
+ end
61
+
62
+ end
63
+
64
+ end
@@ -0,0 +1,179 @@
1
+ require_relative 'ExcelReader'
2
+ require_relative 'RubyUtility'
3
+ require_relative 'RubyReport'
4
+ require "watir-webdriver"
5
+
6
+ class RubyDriver
7
+
8
+ def initialize(file_path,testcase)
9
+ @excel = ExcelReader.new("#{file_path}")
10
+ @rubyutil = RubyUtility.new
11
+ @workbook = @excel.get_workbook
12
+ @headers = @excel.find_header
13
+ @rubyreport = RubyReport.new
14
+ @testcase = testcase
15
+ end
16
+
17
+ def call_driver
18
+ ((@workbook.first_row + 1)..@workbook.last_row).each do |row|
19
+ # Get the column data using the column heading.
20
+ run = @workbook.row(row)[@headers['run']]
21
+ keyword = @workbook.row(row)[@headers['keyword']]
22
+ object = @workbook.row(row)[@headers['object']]
23
+ property = @workbook.row(row)[@headers['property']]
24
+ value = @workbook.row(row)[@headers['value']]
25
+ comments = @workbook.row(row)[@headers['comments']]
26
+
27
+ if "#{@rubyutil.get_string_upcase("#{run}")}" == "R"
28
+ run_test_case("#{keyword}","#{object}","#{property}","#{value}","#{comments}")
29
+ else
30
+ puts "Skipping : #{keyword}, #{object}, #{property}, #{value}, #{comments}}\n\n"
31
+ end
32
+
33
+ end
34
+ end
35
+
36
+ def run_test_case(keyword,object,property,value,comments)
37
+ puts "Running: #{keyword}, #{object}, #{property}, #{value}, #{comments}}\n\n"
38
+ take_action("#{keyword}","#{object}","#{property}","#{value}","#{comments}")
39
+ end
40
+
41
+ def create_object(object,property,value)
42
+ obj_property = @rubyutil.get_property("#{property}")
43
+ if obj_property
44
+ propkey = obj_property.first.strip
45
+ prop_value = obj_property.last.strip
46
+ prop_key = :"#{propkey}"
47
+ obj_identifier = Hash.new
48
+ obj_identifier[prop_key] = "#{prop_value}"
49
+ end
50
+ case "#{@rubyutil.get_string_upcase("#{object}")}"
51
+ when "BROWSER"
52
+ case "#{@rubyutil.get_string_upcase("#{property}")}"
53
+ when "FIREFOX"
54
+ @browser = Watir::Browser.new :ff
55
+ when "CHROME"
56
+ @browser = Watir::Browser.new :chrome
57
+ end
58
+ return @browser
59
+
60
+ when "LINK"
61
+ return @browser.a(obj_identifier)
62
+
63
+ when "TEXT_BOX"
64
+ return @browser.text_field(obj_identifier)
65
+
66
+ when "BUTTON"
67
+ return @browser.button(obj_identifier)
68
+
69
+ when "DIV"
70
+ return @browser.div(obj_identifier)
71
+
72
+ when "RADIO"
73
+ return @browser.radio(obj_identifier)
74
+
75
+ when "CHECKBOX"
76
+ return @browser.checkbox(obj_identifier)
77
+ when "IMAGE"
78
+ return @browser.image(obj_identifier)
79
+ else
80
+ return "#{object}"
81
+ end
82
+ end
83
+
84
+ #def take_action(object,keyword,value)
85
+ def take_action(keyword,object,property,value,comments)
86
+ obj = create_object("#{object}","#{property}","#{value}")
87
+ value_property = @rubyutil.get_value("#{value}")
88
+ if value_property
89
+ value_prop = value_property.first.strip
90
+ value_value = value_property.last.strip
91
+ end
92
+ value_prop = @rubyutil.get_hash_value("#{value_prop}")
93
+ value_value = @rubyutil.get_hash_value("#{value_value}")
94
+
95
+ case "#{@rubyutil.get_string_upcase("#{keyword}")}"
96
+ when "LAUNCH"
97
+ puts "launching #{value}"
98
+ obj.goto value_prop
99
+ when "CLICK"
100
+ puts "clicking"
101
+ obj.when_present.flash
102
+ obj.click
103
+ when "SET"
104
+ puts "setting"
105
+ puts object
106
+ obj.when_present.flash
107
+ obj.set value_prop
108
+ when "CHECK"
109
+ puts "checking"
110
+ obj.when_present.flash
111
+ obj.set
112
+ when "CLEAR"
113
+ puts "clearing"
114
+ obj.when_present.flash
115
+ obj.clear
116
+ when "ASSIGN"
117
+ puts "assigning"
118
+ puts obj
119
+ @var = obj
120
+ puts "#@var"
121
+ if "#{property}" == "time"
122
+ var_value = Time.now.to_i
123
+ hash_var = @rubyutil.create_hash(obj,var_value)
124
+ else
125
+ hash_var = @rubyutil.create_hash(obj,"#{property}")
126
+ end
127
+ when "PUTS"
128
+ puts "putting"
129
+ puts "#{object}"
130
+ puts @rubyutil.get_hash_value("#{object}")
131
+ when "CONCAT"
132
+ puts "concating"
133
+ puts "#{property}"
134
+ str_concat = @rubyutil.get_str_concat("#{property}")
135
+ hash_var = @rubyutil.create_hash(obj,"#{str_concat}")
136
+ when "STOREVALUE"
137
+ puts "storing"
138
+ puts value_prop
139
+ puts value_value
140
+ obj.wait_until_present
141
+ obj.flash
142
+ if value_prop == "text"
143
+ @rubyutil.create_hash(value_value,obj.text)
144
+ elsif value_prop == "exist"
145
+ @rubyutil.create_hash(value_value,obj.exists?)
146
+ elsif value_prop == "title"
147
+ @rubyutil.create_hash(value_value,@browser.title)
148
+ end
149
+ when "VERIFY"
150
+ puts "verifying"
151
+ puts value_prop
152
+ puts value_value
153
+ obj.wait_until_present
154
+ obj.flash
155
+ if value_prop == "text"
156
+ @testcase.assert_equal(obj.text, value_value,"Text does not match")
157
+ # puts object.text.should == value_value
158
+ elsif value_prop == "exist"
159
+ value_boolean = value_value == "true" ? true : false
160
+ @testcase.assert_equal(obj.exists?,value_boolean,"Object does not exist")
161
+ # puts object.exists?.should == value_value
162
+ elsif value_prop == "title"
163
+ @testcase.assert_equal(@browser.title,value_value,"Title does not match")
164
+ end
165
+ when "CLOSE"
166
+ obj.close
167
+ @rubyreport.total_no_of_assertion
168
+ end
169
+ end
170
+
171
+ def create_report
172
+ # @browser.close
173
+ puts "Total Assertion = #{@rubyreport.total_no_of_assertion}\n\n"
174
+ puts "Total Pass = #{@rubyreport.total_no_of_pass}\n\n"
175
+ puts "Total Fail = #{@rubyreport.total_no_of_fail}\n\n"
176
+
177
+ end
178
+
179
+ end
metadata ADDED
@@ -0,0 +1,67 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: watir_keyword_driver
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 0
9
+ version: 0.0.0
10
+ platform: ruby
11
+ authors:
12
+ - Kumar Pratik
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2013-11-11 00:00:00 +05:30
18
+ default_executable:
19
+ dependencies: []
20
+
21
+ description: Keyword driven framework for watir
22
+ email: kumarpratik14@gmail.com
23
+ executables: []
24
+
25
+ extensions: []
26
+
27
+ extra_rdoc_files: []
28
+
29
+ files:
30
+ - lib/watir_keyword_driver.rb
31
+ - lib/RubyUtility.rb
32
+ - lib/RubyReport.rb
33
+ - lib/ExcelReader.rb
34
+ has_rdoc: true
35
+ homepage: http://rubygems.org/gems/watir_keyword_driver
36
+ licenses:
37
+ - kpratik
38
+ post_install_message:
39
+ rdoc_options: []
40
+
41
+ require_paths:
42
+ - lib
43
+ required_ruby_version: !ruby/object:Gem::Requirement
44
+ none: false
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ segments:
49
+ - 0
50
+ version: "0"
51
+ required_rubygems_version: !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ segments:
57
+ - 0
58
+ version: "0"
59
+ requirements: []
60
+
61
+ rubyforge_project:
62
+ rubygems_version: 1.3.7.1
63
+ signing_key:
64
+ specification_version: 3
65
+ summary: Watir Keyword Driver
66
+ test_files: []
67
+