watir-webdriver-utils 1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []