watir-webdriver-utils 1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +3 -0
- data/README +3 -0
- data/Rakefile +48 -0
- data/lib/function/config.rb +7 -0
- data/lib/function/html_element.rb +286 -0
- data/lib/function/program.rb +11 -0
- data/lib/function/tc_page.rb +37 -0
- data/lib/watir-webdriver-utils.rb +11 -0
- metadata +99 -0
data/LICENSE
ADDED
data/README
ADDED
data/Rakefile
ADDED
@@ -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,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
|
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: []
|