watir-webdriver-utils 1.0

Sign up to get free protection for your applications and to get access to all the features.
data/LICENSE ADDED
@@ -0,0 +1,3 @@
1
+ == watir-webdriver-utils
2
+
3
+ Put appropriate LICENSE for your project here.
data/README ADDED
@@ -0,0 +1,3 @@
1
+ == watir-webdriver-utils
2
+
3
+ You should document your project here.
@@ -0,0 +1,48 @@
1
+ #
2
+ # To change this template, choose Tools | Templates
3
+ # and open the template in the editor.
4
+
5
+
6
+ require 'rubygems'
7
+ require 'rake'
8
+ require 'rake/clean'
9
+ require 'rake/gempackagetask'
10
+ require 'rake/rdoctask'
11
+ require 'rake/testtask'
12
+
13
+ spec = Gem::Specification.new do |s|
14
+ s.name = 'watir-webdriver-utils'
15
+ s.version = '1.0'
16
+ s.has_rdoc = true
17
+ s.extra_rdoc_files = ['README', 'LICENSE']
18
+ s.summary = 'Utils function for Watir-Webdriver'
19
+ s.description = s.summary
20
+ s.author = 'QuangMV, Cyworld VietNam, 5th Floor, 5/447 Lac Long Quan Street, Tay Ho Dist, Ha Noi, VietNam'
21
+ s.email = 'mr.quangmv@gmail.com'
22
+ s.files = %w(LICENSE README Rakefile) + Dir.glob("{bin,lib,spec}/**/*")
23
+ s.require_path = "lib"
24
+ s.bindir = "bin"
25
+ s.add_dependency('watir-webdriver','>=0.6.1')
26
+ s.add_dependency('ocra','>=1.3.0')
27
+ s.add_dependency('tlsmail','>=0.0.1')
28
+ s.add_dependency('gmail_sender','>=1.1.1')
29
+ end
30
+
31
+ Rake::GemPackageTask.new(spec) do |p|
32
+ p.gem_spec = spec
33
+ p.need_tar = true
34
+ p.need_zip = true
35
+ end
36
+
37
+ Rake::RDocTask.new do |rdoc|
38
+ files =['README', 'LICENSE', 'lib/**/*.rb']
39
+ rdoc.rdoc_files.add(files)
40
+ rdoc.main = "README" # page to start on
41
+ rdoc.title = "watir-webdriver-utils Docs"
42
+ rdoc.rdoc_dir = 'doc/rdoc' # rdoc output folder
43
+ rdoc.options << '--line-numbers'
44
+ end
45
+
46
+ Rake::TestTask.new do |t|
47
+ t.test_files = FileList['test/**/*.rb']
48
+ end
@@ -0,0 +1,7 @@
1
+ # To change this template, choose Tools | Templates
2
+ # and open the template in the editor.
3
+ class ProgramConfig
4
+ BROWSER = 'chrome'
5
+ TIMEOUT = 10
6
+ SLEEP = 1
7
+ end
@@ -0,0 +1,286 @@
1
+ # To change this template, choose Tools | Templates
2
+ # and open the template in the editor.
3
+ require 'watir-webdriver'
4
+ require File.join(File.dirname(__FILE__), '..','Classes/config')
5
+
6
+ class HTMLElement
7
+ TAB_TYPE_ID = 'id'.to_sym
8
+ TAB_TYPE_VALUE = 'value'.to_sym
9
+ TAB_TYPE_NAME = 'name'.to_sym
10
+ TAB_TYPE_CLASS = 'class'.to_sym
11
+ TAB_TYPE_TEXT = 'text'.to_sym
12
+ TAB_TYPE_HREF = 'href'.to_sym
13
+ TAB_TYPE_TITLE = 'title'.to_sym
14
+ TAB_TYPE_URL = 'url'.to_sym
15
+ TAB_TYPE_ACTION = 'action'.to_sym
16
+ TAB_TYPE_INDEX = 'index'.to_sym
17
+ TAB_TYPE_SRC = 'src'.to_sym
18
+ TAB_TYPE_LENGTH = 'length'.to_sym
19
+ TAB_TYPE_MAXLENGTH = 'maxlength'.to_sym
20
+
21
+ #text_field
22
+ TEXT_FIELD_SET = 1
23
+ TEXT_FIELD_SET_VALUE = 2
24
+ TEXT_FIELD_SET_APPEND = 3
25
+ TEXT_FIELD_FOCUS = 4
26
+
27
+ #select_list
28
+ SELECT_LIST_SELECT = 1
29
+ SELECT_LIST_SELECT_VALUE = 2
30
+
31
+ #fire_event
32
+ FIRE_EVENT_ON_MOUSE_OVER = 1
33
+
34
+ attr_accessor :browser
35
+
36
+ def initialize
37
+ @browser = Watir::Browser::new ProgramConfig::BROWSER
38
+ end
39
+
40
+ def goto(url)
41
+ @browser.goto(url)
42
+ end
43
+
44
+ def xxx
45
+ @browser.close
46
+ # sleep(5)
47
+ end
48
+
49
+ def click_link(arg,value)
50
+ rescue_wait_retry{@browser.link(arg,value).click}
51
+ end
52
+
53
+ def click_button(arg,value)
54
+ rescue_wait_retry{@browser.button(arg,value).click}
55
+ end
56
+
57
+ def click_image(arg,value)
58
+ rescue_wait_retry{@browser.image(arg,value).click}
59
+ end
60
+
61
+ def click_div(arg,value)
62
+ rescue_wait_retry{@browser.div(arg,value).click}
63
+ end
64
+
65
+ def click_span(arg,value)
66
+ rescue_wait_retry{@browser.span(arg,value).click}
67
+ end
68
+
69
+ def set_text_field(arg,value,text,type = TEXT_FIELD_SET)
70
+ wait_until_html_loaded(@browser.text_field(arg,value))
71
+ if type == TEXT_FIELD_SET then
72
+ @browser.text_field(arg,value).set(text)
73
+ elsif type == TEXT_FIELD_SET_VALUE then
74
+ @browser.text_field(arg,value).value = text
75
+ elsif type == TEXT_FIELD_SET_APPEND then
76
+ @browser.text_field(arg,value).append(text)
77
+ elsif type == TEXT_FIELD_FOCUS then
78
+ @browser.text_field(arg,value).focus
79
+ end
80
+ end
81
+
82
+ def verify_text_field_value(arg,text)
83
+ wait_until_html_loaded( @browser.text_field(arg,text) )
84
+ assert(@browser.text_field(arg,text).verify_contains(text) )
85
+ end
86
+
87
+ def set_file_field(arg,value,text)
88
+ wait_until_html_loaded(@browser.file_field(arg,value))
89
+ @browser.file_field(arg,value).set(text)
90
+ end
91
+
92
+ #Form
93
+ def submit_form(arg,value)
94
+ wait_until_html_loaded(@browser.form(arg,value))
95
+ @browser.form(arg,value).submit
96
+ end
97
+
98
+ def get_form(arg,value)
99
+ wait_until_html_loaded(@browser.form(arg,value))
100
+ return @browser.form(arg,value)
101
+ end
102
+
103
+ #Frame
104
+ def get_frame(arg,value)
105
+ wait_until_html_loaded(@browser.frame(arg,value))
106
+ return @browser.frame(arg,value)
107
+ end
108
+
109
+ #Table
110
+ def get_table(arg,value)
111
+ wait_until_html_loaded( @browser.table(arg,value) )
112
+ return @browser.table(arg,value)
113
+ end
114
+
115
+ #Div
116
+ def get_div(arg,value)
117
+ wait_until_html_loaded( @browser.div(arg, value) )
118
+ return @browser.div(arg, value)
119
+ end
120
+
121
+ #Checkbox
122
+ def set_checkbox(arg,value)
123
+ wait_until_html_loaded(@browser.checkbox(arg, value))
124
+ @browser.checkbox(arg, value).set
125
+ end
126
+
127
+ def clear_checkbox(argname)
128
+ wait_until_html_loaded(@browser.checkbox(arg, value))
129
+ @browser.checkbox(arg, value).clear
130
+ end
131
+
132
+ def set_select_list(arg,value,type = SELECT_LIST_SELECT)
133
+ wait_until_html_loaded(@browser.select_list(arg, value))
134
+ if type == SELECT_LIST_SELECT then
135
+ @browser.select_list(arg, value).select(value)
136
+ elsif type == SELECT_LIST_SELECT_VALUE then
137
+ @browser.select_list(arg, value).select_value(value)
138
+ end
139
+ end
140
+
141
+ def get_select_list(arg,value)
142
+ wait_until_html_loaded(@browser.select_list(arg, value))
143
+ return @browser.select_list(arg, value)
144
+ end
145
+
146
+ #Radio
147
+ def set_radio(arg,value)
148
+ wait_until_html_loaded(@browser.radio(arg, value))
149
+ @browser.radio(arg, value).set
150
+ end
151
+
152
+ def attach_new_window(arg,value)
153
+ begin
154
+ ff1 = @browser.attach(arg,value)
155
+ rescue Exception => e
156
+ sleep ProgramConfig::SLEEP
157
+ retry
158
+ end
159
+ return ff1
160
+ end
161
+
162
+ #Javascript event:<br>
163
+ def fire_event(element,type = FIRE_EVENT_ON_MOUSE_OVER)
164
+ wait_until_html_loaded(element)
165
+ if type == FIRE_EVENT_ON_MOUSE_OVER then
166
+ element.fire_event("onMouseOver")
167
+ end
168
+ end
169
+
170
+ #Remove all Cookies on Browser
171
+ def remove_all_cookies #0.0.8
172
+ jssh_command = "Components.classes[\"@mozilla.org/cookiemanager;1\"].getService(Components.interfaces.nsICookieManager).removeAll();"
173
+ $jssh_socket.send("#{jssh_command}\n", 0)
174
+ end
175
+
176
+ def rescue_wait_retry(exception = Watir::Exception::UnknownObjectException, times = ProgramConfig::TIMEOUT, seconds = ProgramConfig::SLEEP, &block)
177
+ begin
178
+ return yield
179
+ rescue exception => e
180
+ puts "Caught #{exception}: #{e}. Sleeping #{seconds} seconds."
181
+ sleep(seconds)
182
+ @browser.wait
183
+ if (times -= 1)> 0
184
+ puts "Retrying... #{times} times left"
185
+ retry
186
+ end
187
+ end
188
+ yield
189
+ end
190
+
191
+ def check_html_exists?(elem)
192
+ start_time = Time.now
193
+ while (!elem.exists?) do
194
+ sleep ProgramConfig::SLEEP
195
+ if Time.now - start_time> ProgramConfig::TIMEOUT
196
+ puts "Timed out after #{ProgramConfig::TIMEOUT} seconds"
197
+ false
198
+ end
199
+ end
200
+ true
201
+ end
202
+
203
+ def wait_until_html_loaded(elem)
204
+ start_time = Time.now
205
+ while (!elem.exists?) do
206
+ sleep ProgramConfig::SLEEP
207
+ if Time.now - start_time> ProgramConfig::TIMEOUT
208
+ raise RuntimeError, "Timed out after #{ProgramConfig::TIMEOUT} seconds"
209
+ end
210
+ end
211
+ end
212
+
213
+ def assert_text(text) #0.0.6
214
+ start_time = Time.now
215
+ while !@browser.text.include?(text) do
216
+ sleep ProgramConfig::SLEEP
217
+ if Time.now - start_time> ProgramConfig::TIMEOUT
218
+ raise RuntimeError, "Timed out assert after #{ProgramConfig::TIMEOUT} seconds"
219
+ end
220
+ end
221
+ end
222
+
223
+ #Assert False text in page
224
+ def assert_text_false(text)
225
+ start_time = Time.now
226
+ while @browser.text.include?(text) do
227
+ sleep ProgramConfig::SLEEP
228
+ if Time.now - start_time> ProgramConfig::TIMEOUT
229
+ raise RuntimeError, "Timed out assert after #{ProgramConfig::TIMEOUT} seconds"
230
+ end
231
+ end
232
+ end
233
+
234
+ def assert_equal(value,elem,type)
235
+ case type
236
+ when TAB_TYPE_TEXT then
237
+ start_time = Time.now
238
+ while (value != elem.text) do
239
+ sleep ProgramConfig::SLEEP
240
+ if Time.now - start_time> ProgramConfig::TIMEOUT
241
+ raise RuntimeError, "(assert_equal) Timed out after #{ProgramConfig::TIMEOUT} seconds"
242
+ end
243
+ end
244
+ when TAB_TYPE_VALUE then
245
+ start_time = Time.now
246
+ while (value != elem.value) do
247
+ sleep ProgramConfig::SLEEP
248
+ if Time.now - start_time> ProgramConfig::TIMEOUT
249
+ raise RuntimeError, "(assert_equal) Timed out after #{ProgramConfig::TIMEOUT} seconds"
250
+ end
251
+ end
252
+ when TAB_TYPE_TITLE then
253
+ start_time = Time.now
254
+ while (value != elem.title) do
255
+ sleep ProgramConfig::SLEEP
256
+ if Time.now - start_time> ProgramConfig::TIMEOUT
257
+ raise RuntimeError, "(assert_equal) Timed out after #{ProgramConfig::TIMEOUT} seconds"
258
+ end
259
+ end
260
+ when TAB_TYPE_LENGTH then
261
+ start_time = Time.now
262
+ while (value != elem.length) do
263
+ sleep ProgramConfig::SLEEP
264
+ if Time.now - start_time> ProgramConfig::TIMEOUT
265
+ raise RuntimeError, "(assert_equal) Timed out after #{ProgramConfig::TIMEOUT} seconds"
266
+ end
267
+ end
268
+ when TAB_TYPE_MAXLENGTH then
269
+ start_time = Time.now
270
+ while (value != elem.maxlength) do
271
+ sleep ProgramConfig::SLEEP
272
+ if Time.now - start_time> ProgramConfig::TIMEOUT
273
+ raise RuntimeError, "(assert_equal) Timed out after #{ProgramConfig::TIMEOUT} seconds"
274
+ end
275
+ end
276
+ when TAB_TYPE_URL then
277
+ start_time = Time.now
278
+ while (value != elem.url) do
279
+ sleep ProgramConfig::SLEEP
280
+ if Time.now - start_time> ProgramConfig::TIMEOUT
281
+ raise RuntimeError, "(assert_equal) Timed out after #{ProgramConfig::TIMEOUT} seconds"
282
+ end
283
+ end
284
+ end
285
+ end
286
+ end
@@ -0,0 +1,11 @@
1
+ # To change this template, choose Tools | Templates
2
+ # and open the template in the editor.
3
+ require File.join(File.dirname(__FILE__), '..','Classes/html_element')
4
+
5
+ class Program < HTMLElement
6
+ def initialize
7
+ super
8
+ end
9
+
10
+ #define function at here
11
+ end
@@ -0,0 +1,37 @@
1
+ # To change this template, choose Tools | Templates
2
+ # and open the template in the editor.
3
+ require 'rubygems'
4
+ require 'watir/testcase'
5
+ require File.join(File.dirname(__FILE__), '..','Classes/program')
6
+
7
+ class TC_Page < Watir::TestCase
8
+ def setup
9
+ @browser = Program.new
10
+ end
11
+
12
+ def test_case_a
13
+ begin
14
+ #code here
15
+ @test_passed = true
16
+ rescue Exception => e
17
+ @test_passed = false
18
+ puts e.inspect
19
+ end
20
+ end
21
+
22
+ def test_case_b
23
+ begin
24
+ #code here
25
+ @test_passed = true
26
+ rescue Exception => e
27
+ @test_passed = false
28
+ puts e.inspect
29
+ end
30
+ end
31
+
32
+ def teardown
33
+ puts @test_passed ? '************************** TRUE **************************' : '************************** FALSE **************************'
34
+ @browser.xxx
35
+ end
36
+
37
+ end
@@ -0,0 +1,11 @@
1
+ require 'test/unit'
2
+ require 'rubygems'
3
+ require 'watir-webdriver'
4
+ require 'cgi'
5
+ require 'win32ole'
6
+ require 'pathname'
7
+ require 'gmail_sender'
8
+
9
+ require "function/program"
10
+ require "function/html_element"
11
+ require "function/config"
metadata ADDED
@@ -0,0 +1,99 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: watir-webdriver-utils
3
+ version: !ruby/object:Gem::Version
4
+ version: '1.0'
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - QuangMV, Cyworld VietNam, 5th Floor, 5/447 Lac Long Quan Street, Tay Ho Dist, Ha
9
+ Noi, VietNam
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2012-06-25 00:00:00.000000000Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: watir-webdriver
17
+ requirement: &7677756 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: 0.6.1
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *7677756
26
+ - !ruby/object:Gem::Dependency
27
+ name: ocra
28
+ requirement: &7679388 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 1.3.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: *7679388
37
+ - !ruby/object:Gem::Dependency
38
+ name: tlsmail
39
+ requirement: &7693308 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: 0.0.1
45
+ type: :runtime
46
+ prerelease: false
47
+ version_requirements: *7693308
48
+ - !ruby/object:Gem::Dependency
49
+ name: gmail_sender
50
+ requirement: &7709784 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: 1.1.1
56
+ type: :runtime
57
+ prerelease: false
58
+ version_requirements: *7709784
59
+ description: Utils function for Watir-Webdriver
60
+ email: mr.quangmv@gmail.com
61
+ executables: []
62
+ extensions: []
63
+ extra_rdoc_files:
64
+ - README
65
+ - LICENSE
66
+ files:
67
+ - LICENSE
68
+ - README
69
+ - Rakefile
70
+ - lib/function/config.rb
71
+ - lib/function/html_element.rb
72
+ - lib/function/program.rb
73
+ - lib/function/tc_page.rb
74
+ - lib/watir-webdriver-utils.rb
75
+ homepage:
76
+ licenses: []
77
+ post_install_message:
78
+ rdoc_options: []
79
+ require_paths:
80
+ - lib
81
+ required_ruby_version: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ required_rubygems_version: !ruby/object:Gem::Requirement
88
+ none: false
89
+ requirements:
90
+ - - ! '>='
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ requirements: []
94
+ rubyforge_project:
95
+ rubygems_version: 1.8.17
96
+ signing_key:
97
+ specification_version: 3
98
+ summary: Utils function for Watir-Webdriver
99
+ test_files: []