watir 1.4.1
Sign up to get free protection for your applications and to get access to all the features.
- data/readme.rb +211 -0
- data/unittests/WindowLogonExample.rb +30 -0
- data/unittests/WindowLogonExtra.rb +7 -0
- data/unittests/all_tests.rb +10 -0
- data/unittests/all_tests_concurrent.rb +57 -0
- data/unittests/attachToExistingWindow_test.rb +40 -0
- data/unittests/buttons_test.rb +131 -0
- data/unittests/checkbox_test.rb +149 -0
- data/unittests/core_tests.rb +9 -0
- data/unittests/css_test.rb +60 -0
- data/unittests/div_test.rb +179 -0
- data/unittests/errorchecker_test.rb +29 -0
- data/unittests/filefield_test.rb +35 -0
- data/unittests/form_test.rb +279 -0
- data/unittests/frame_test.rb +141 -0
- data/unittests/html/blankpage.html +12 -0
- data/unittests/html/buttons1.html +40 -0
- data/unittests/html/checkboxes1.html +69 -0
- data/unittests/html/complex_table.html +36 -0
- data/unittests/html/cssTest.html +42 -0
- data/unittests/html/div.html +105 -0
- data/unittests/html/fileupload.html +45 -0
- data/unittests/html/formTest1.html +39 -0
- data/unittests/html/forms2.html +45 -0
- data/unittests/html/forms3.html +132 -0
- data/unittests/html/forms4.html +27 -0
- data/unittests/html/frame_buttons.html +4 -0
- data/unittests/html/frame_links.html +4 -0
- data/unittests/html/frame_multi.html +5 -0
- data/unittests/html/iframeTest.html +13 -0
- data/unittests/html/iframeTest1.html +7 -0
- data/unittests/html/iframeTest2.html +6 -0
- data/unittests/html/images/1.gif +0 -0
- data/unittests/html/images/2.GIF +0 -0
- data/unittests/html/images/3.GIF +0 -0
- data/unittests/html/images/button.jpg +0 -0
- data/unittests/html/images/circle.jpg +0 -0
- data/unittests/html/images/minus.GIF +0 -0
- data/unittests/html/images/originaltriangle.jpg +0 -0
- data/unittests/html/images/plus.gif +0 -0
- data/unittests/html/images/square.jpg +0 -0
- data/unittests/html/images/triangle.jpg +0 -0
- data/unittests/html/images1.html +52 -0
- data/unittests/html/javascriptevents.html +39 -0
- data/unittests/html/link_pass.html +11 -0
- data/unittests/html/links1.html +37 -0
- data/unittests/html/links2.html +11 -0
- data/unittests/html/nestedFrames.html +6 -0
- data/unittests/html/pass.html +10 -0
- data/unittests/html/popups1.html +60 -0
- data/unittests/html/radioButtons1.html +71 -0
- data/unittests/html/select_tealeaf.html +54 -0
- data/unittests/html/selectboxes1.html +55 -0
- data/unittests/html/simple_table.html +26 -0
- data/unittests/html/simple_table_buttons.html +104 -0
- data/unittests/html/simple_table_columns.html +76 -0
- data/unittests/html/table1.html +142 -0
- data/unittests/html/textarea.html +30 -0
- data/unittests/html/textfields1.html +87 -0
- data/unittests/html/textsearch.html +44 -0
- data/unittests/ie_mock.rb +93 -0
- data/unittests/ie_test.rb +50 -0
- data/unittests/images_test.rb +179 -0
- data/unittests/iostring.rb +30 -0
- data/unittests/iostring_test.rb +48 -0
- data/unittests/js_events_test.rb +77 -0
- data/unittests/jscriptExtraAlert.rb +6 -0
- data/unittests/jscriptExtraConfirmCancel.rb +7 -0
- data/unittests/jscriptExtraConfirmOk.rb +7 -0
- data/unittests/jscriptPushButton.rb +5 -0
- data/unittests/jscript_test.rb +57 -0
- data/unittests/links_test.rb +169 -0
- data/unittests/minmax_test.rb +31 -0
- data/unittests/navigate_test.rb +56 -0
- data/unittests/non_core_tests.rb +9 -0
- data/unittests/pagecontainstext_test.rb +49 -0
- data/unittests/popups_test.rb +44 -0
- data/unittests/radios_test.rb +164 -0
- data/unittests/screen_capture_test.rb +53 -0
- data/unittests/selectbox_test.rb +197 -0
- data/unittests/send_keys_test.rb +29 -0
- data/unittests/setup.rb +47 -0
- data/unittests/table_test.rb +306 -0
- data/unittests/textAreafields_test.rb +81 -0
- data/unittests/textfields_test.rb +239 -0
- data/watir.rb +3744 -0
- data/watir/AutoItX3.dll +0 -0
- data/watir/WindowHelper.rb +47 -0
- data/watir/camel_case.rb +37 -0
- data/watir/clickJSDialog.rb +19 -0
- data/watir/cookiemanager.rb +53 -0
- data/watir/exceptions.rb +60 -0
- data/watir/screen_capture.rb +115 -0
- data/watir/setFileDialog.rb +16 -0
- data/watir/testUnitAddons.rb +47 -0
- data/watir/watir_simple.rb +475 -0
- data/watir/winClicker.rb +505 -0
- metadata +152 -0
data/readme.rb
ADDED
@@ -0,0 +1,211 @@
|
|
1
|
+
=begin rdoc
|
2
|
+
|
3
|
+
This is Watir - Web Application Testing In Ruby http://wtr.rubyforge.org
|
4
|
+
|
5
|
+
To Install:
|
6
|
+
Execute install.rb.
|
7
|
+
|
8
|
+
How To Use:
|
9
|
+
This only works on Windows. It has been tested on Windows 2000 and XP.
|
10
|
+
Best is to use Ruby 1.8.2-14 or later.
|
11
|
+
This has been developed and tested using Ruby 1.8.1-11, Ruby 1.8.1-12.
|
12
|
+
It will NOT work with Ruby 1.8.1-13. (This version of Ruby has a bad WIN32OLE library.)
|
13
|
+
Requires Internet Explorer 5.5 or newer.
|
14
|
+
Check out the mail lists and the documentation for the workarounds.
|
15
|
+
Install ruby from http://ruby-lang.org
|
16
|
+
|
17
|
+
Unit Tests:
|
18
|
+
Run the unittests in a cmd shell. Go to the dir where you installed it and then type 'ruby unittests/core_tests.rb'.
|
19
|
+
See the user guide if you are having problems with security blocking.
|
20
|
+
|
21
|
+
Changes in 1.4.1
|
22
|
+
(based on watir.rb revision 1.215)
|
23
|
+
removed annoying warning message that sometimes appeared
|
24
|
+
corrected Element#class_name references which has been misnamed Element#style
|
25
|
+
removed IE#capture_events (didn't really work)
|
26
|
+
added IE#bring_to_front and IE#front?
|
27
|
+
fixed failing frame tests
|
28
|
+
remove failing test for disabled images
|
29
|
+
better rdoc
|
30
|
+
|
31
|
+
Changes in 1.4.0
|
32
|
+
fix method name for accessing class name of P/Span/Div (change from style to class_name)
|
33
|
+
fix for bug 2152 (frame index in show_frames off by 1)
|
34
|
+
added alt as a property to image
|
35
|
+
added file_fields
|
36
|
+
fixed TextArea#to_s
|
37
|
+
moved reset button to buttons class
|
38
|
+
add IE#send_keys
|
39
|
+
frames can now be referenced using regexps and ids
|
40
|
+
added IE#minimize, IE#maximize, IE#restore
|
41
|
+
onChange and onBlur events now triggered by TextField#set
|
42
|
+
added default option to set for checkbox
|
43
|
+
added colspan method to tablecell
|
44
|
+
fix for bug reported by Scott P, wrong objects are sometimes found
|
45
|
+
fixed bug with radio/checkboxes doing multiple fireevents
|
46
|
+
fix for table, id and reg exp
|
47
|
+
wait for page load before returning from IE.attach
|
48
|
+
update to select_list -- new interface still in progress
|
49
|
+
added .show method to iterators
|
50
|
+
fix for flashing objects in table cells
|
51
|
+
added flash for forms
|
52
|
+
flash returns nil instead of the curious '10'
|
53
|
+
removed ScreenCapture module from IE class
|
54
|
+
|
55
|
+
Changes in 1.3.1
|
56
|
+
Added P tag support
|
57
|
+
Bug fix for images and links in frames using each
|
58
|
+
Bug fixes for image#save
|
59
|
+
|
60
|
+
Changes in 1.3
|
61
|
+
added new row_values and column_value methods to tables
|
62
|
+
added ability to save an image - ie.image(:index,1).save('c:\temp\mypic.gif')
|
63
|
+
new method, html that applies to objects, not just a page - ie.button(:index,1).html => <INPUT id=b2 title="this is button1" onclick="javascript:document.location='pass.html';" type=button value="Click Me" name=b1>
|
64
|
+
now throws a NavigationException on 404, 500 errors
|
65
|
+
iterators now mixin Enumerable
|
66
|
+
added support for labels
|
67
|
+
added support for frames by index
|
68
|
+
added screen_capture
|
69
|
+
added hidden field support, and iterator method
|
70
|
+
table cells, span and div now act as containers, so can do ie.div(:index,1).button(:index.2).click
|
71
|
+
added index to print out from show_xx methods. Link shows img src if an image is used
|
72
|
+
added onKeyUp and onKeyDown to text_fields#set
|
73
|
+
installer now installs AutoIt to deal with javascript popups, file uploads etc
|
74
|
+
the spinner is now off by default
|
75
|
+
bug fix in text_fields iterator where it wasnt iterating through password or text ares. Added test for password fields
|
76
|
+
bug fix for flash for tables
|
77
|
+
bug fixes for images and links in cells
|
78
|
+
|
79
|
+
Typical Usage
|
80
|
+
# include the controller
|
81
|
+
require 'watir'
|
82
|
+
# create an instance of the controller
|
83
|
+
ie = Watir::IE.new
|
84
|
+
# go to the page you want to test
|
85
|
+
ie.goto("http://myserver/mypage")
|
86
|
+
# to enter text into a text field - assuming the field is name "username"
|
87
|
+
ie.text_field(:name, "username").set("Paul")
|
88
|
+
# if there was a text field that had an id of "company_ID", you could set it to Ruby Co:
|
89
|
+
ie.text_field(:id ,"company_ID").set("Ruby Co")
|
90
|
+
# to click a button that has a caption of 'Cancel'
|
91
|
+
ie.button(:value, "Cancel").click
|
92
|
+
|
93
|
+
The ways that are available to identify an html object depend upon the object type, but include
|
94
|
+
:id used for an object that has an ID attribute -- this is the best way!
|
95
|
+
:name used for an object that has a name attribute.
|
96
|
+
:value value of text fields, captions of buttons
|
97
|
+
:index finds the nth object of the specified type - eg button(:index , 2) finds the second button. This is 1 based. <br>
|
98
|
+
:beforeText finds the object immeditaley before the specified text. Doesnt work if the text is in a table cell
|
99
|
+
:afterText finds the object immeditaley after the specified text. Doesnt work if the text is in a table cell
|
100
|
+
|
101
|
+
The objects that are currently supported include
|
102
|
+
Button
|
103
|
+
Radio
|
104
|
+
CheckBox
|
105
|
+
TextField (Including TextArea and Password)
|
106
|
+
Hidden
|
107
|
+
SelectList
|
108
|
+
Label
|
109
|
+
Span
|
110
|
+
Div
|
111
|
+
P
|
112
|
+
Link
|
113
|
+
Table
|
114
|
+
Image
|
115
|
+
|
116
|
+
These 2 web sites provide info on Internet Explorer and on the DOM as implemented by Internet Explorer
|
117
|
+
http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/webbrowser/webbrowser.asp
|
118
|
+
http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/overview/overview.asp
|
119
|
+
|
120
|
+
Command line options:
|
121
|
+
|
122
|
+
-b (background) Run Internet Explorer invisible
|
123
|
+
-f (fast) Run tests very fast
|
124
|
+
-x (spinner) Add a spinner that displays when pages are waiting to be loaded.
|
125
|
+
|
126
|
+
Note that if you also use test/unit, you will need to require 'watir' first to avoid conflicts
|
127
|
+
with its command line switches.
|
128
|
+
|
129
|
+
Javascript Pop Up Support
|
130
|
+
Watir now installs AutoIt - http://www.autoitscript.com/
|
131
|
+
This is the preffered method for dealing with pop ups, file requesters etc. Support for Winclickers will be removed.
|
132
|
+
|
133
|
+
Contacts:
|
134
|
+
Paul Rogers (paul.rogers@shaw.ca)
|
135
|
+
Bret Pettichord (bret@pettichord.com)
|
136
|
+
The mailing list: http://rubyforge.org/mail/?group_id=104
|
137
|
+
|
138
|
+
Contributors:
|
139
|
+
Bret Pettichord
|
140
|
+
Paul Rogers
|
141
|
+
Jonathan Kohl
|
142
|
+
Chris Morris
|
143
|
+
Karlin Fox
|
144
|
+
Lorenzo Jorquera
|
145
|
+
Atilla Ozgur
|
146
|
+
Justin McCarthy
|
147
|
+
Chris McMahon
|
148
|
+
Elisabeth Hendrickson
|
149
|
+
Michael Kelly (Indianapolis)
|
150
|
+
Peter Chau
|
151
|
+
Jacinda Scott
|
152
|
+
Danny Faught
|
153
|
+
Andy Sipe
|
154
|
+
John Lloyd-Jones
|
155
|
+
Chris Hedges
|
156
|
+
Park Heesob
|
157
|
+
Shashank Date
|
158
|
+
Jared Luxenberg
|
159
|
+
Alexey Verkhovsky
|
160
|
+
Tuyet Cong-Ton-Nu
|
161
|
+
Kingsley Hendrickse
|
162
|
+
|
163
|
+
Acknowledgements:
|
164
|
+
Chris Morris
|
165
|
+
Brian Marick
|
166
|
+
Jonathan Kohl
|
167
|
+
Penny Tonita
|
168
|
+
Janet Gregory
|
169
|
+
Andy Tinkham
|
170
|
+
|
171
|
+
Thanks for your ideas and support!
|
172
|
+
|
173
|
+
License
|
174
|
+
---------------------------------------------------------------------------
|
175
|
+
Copyright (c) 2004-2005, Paul Rogers and Bret Pettichord
|
176
|
+
All rights reserved.
|
177
|
+
|
178
|
+
Redistribution and use in source and binary forms, with or without
|
179
|
+
modification, are permitted provided that the following conditions are met:
|
180
|
+
|
181
|
+
1. Redistributions of source code must retain the above copyright notice,
|
182
|
+
this list of conditions and the following disclaimer.
|
183
|
+
|
184
|
+
2. Redistributions in binary form must reproduce the above copyright
|
185
|
+
notice, this list of conditions and the following disclaimer in the
|
186
|
+
documentation and/or other materials provided with the distribution.
|
187
|
+
|
188
|
+
3. Neither the names Paul Rogers, Bret Pettichord nor the names of contributors to
|
189
|
+
this software may be used to endorse or promote products derived from this
|
190
|
+
software without specific prior written permission.
|
191
|
+
|
192
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
|
193
|
+
IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
194
|
+
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
195
|
+
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
|
196
|
+
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
197
|
+
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
198
|
+
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
199
|
+
OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
200
|
+
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
201
|
+
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
202
|
+
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
203
|
+
--------------------------------------------------------------------------
|
204
|
+
(based on BSD Open Source License)
|
205
|
+
|
206
|
+
|
207
|
+
|
208
|
+
|
209
|
+
=end
|
210
|
+
class ReadMe
|
211
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') if $0 == __FILE__
|
4
|
+
require 'unittests/setup'
|
5
|
+
require 'watir/WindowHelper'
|
6
|
+
|
7
|
+
class TC_Logon_Test < Test::Unit::TestCase
|
8
|
+
include Watir
|
9
|
+
|
10
|
+
def goto_windows_login_page()
|
11
|
+
$ie.goto('http://clio.lyris.com/')
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
def test_window_logon()
|
16
|
+
|
17
|
+
a = Thread.new {
|
18
|
+
system('ruby WindowLogonExtra.rb')
|
19
|
+
|
20
|
+
}
|
21
|
+
b = Thread.new {
|
22
|
+
goto_windows_login_page()
|
23
|
+
}
|
24
|
+
a.join
|
25
|
+
b.join
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# This is an UNFINISHED attempt to run the unit tests currently.
|
2
|
+
# The work on the harness is complete.
|
3
|
+
# The problem remaining is that the tests are not thread-safe.
|
4
|
+
# It's an open question whether getting this to work would actually save any execution time.
|
5
|
+
|
6
|
+
TOPDIR = File.join(File.dirname(__FILE__), '..')
|
7
|
+
$LOAD_PATH.unshift TOPDIR
|
8
|
+
Dir.chdir TOPDIR
|
9
|
+
#(Dir["unittests/*_test.rb"] - ["unittests/popups_test.rb"]).each {|x| require x}
|
10
|
+
|
11
|
+
require 'unittests/buttons_test'
|
12
|
+
require 'unittests/checkbox_test'
|
13
|
+
|
14
|
+
require 'test/unit/testsuite'
|
15
|
+
require 'thread'
|
16
|
+
class ConcurrentTestSuite < Test::Unit::TestSuite
|
17
|
+
|
18
|
+
# Runs the tests and/or suites contained in this TestSuite.
|
19
|
+
def run(result, &progress_block)
|
20
|
+
yield(STARTED, name)
|
21
|
+
threads = []
|
22
|
+
@tests.each do |test|
|
23
|
+
threads << Thread.new do
|
24
|
+
test.run(result, &progress_block)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
threads.each {|t| t.join}
|
28
|
+
yield(FINISHED, name)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
# create a suite
|
33
|
+
require 'test/unit/collector/objectspace'
|
34
|
+
|
35
|
+
require 'test/unit/collector'
|
36
|
+
include Test::Unit::Collector
|
37
|
+
|
38
|
+
|
39
|
+
@filters = []
|
40
|
+
suite = ConcurrentTestSuite.new('super suite')
|
41
|
+
sub_suites = []
|
42
|
+
::ObjectSpace.each_object(Class) do |klass|
|
43
|
+
if(Test::Unit::TestCase > klass)
|
44
|
+
puts sub_suites, klass.suite
|
45
|
+
add_suite(sub_suites, klass.suite)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
sort(sub_suites).each{|s| suite << s}
|
49
|
+
|
50
|
+
|
51
|
+
|
52
|
+
# select a runner
|
53
|
+
require 'test/unit/ui/console/testrunner'
|
54
|
+
Test::Unit::UI::Console::TestRunner.run(suite)
|
55
|
+
|
56
|
+
|
57
|
+
# then subclass Test::Unit::TestSuite and override the run method to be multithreaded
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# feature tests for attaching to existing IE windows
|
2
|
+
# revision: $Revision: 1.8 $
|
3
|
+
|
4
|
+
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') if $0 == __FILE__
|
5
|
+
require 'unittests/setup'
|
6
|
+
|
7
|
+
class TC_ExistingWindow< Test::Unit::TestCase
|
8
|
+
include Watir
|
9
|
+
|
10
|
+
def goto_page(page)
|
11
|
+
$ie.goto($htmlRoot + page)
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_ExistingWindow
|
15
|
+
goto_page 'buttons1.html'
|
16
|
+
ie3=nil
|
17
|
+
|
18
|
+
assert_raises( NoMatchingWindowFoundException ) { ie3 = IE.attach(:title , "missing") }
|
19
|
+
assert_raises( NoMatchingWindowFoundException ) { ie3 = IE.attach(:title , /missing/) }
|
20
|
+
|
21
|
+
assert_raises( NoMatchingWindowFoundException ) { ie3 = IE.attach(:url , "missing") }
|
22
|
+
assert_raises( NoMatchingWindowFoundException ) { ie3 = IE.attach(:url , /missing/) }
|
23
|
+
|
24
|
+
ie3 = IE.attach(:title , /buttons/i )
|
25
|
+
assert_equal( "Test page for buttons" , ie3.title)
|
26
|
+
ie3=nil
|
27
|
+
|
28
|
+
ie3 = IE.attach(:title , "Test page for buttons" )
|
29
|
+
assert_equal( "Test page for buttons" , ie3.title)
|
30
|
+
ie3=nil
|
31
|
+
|
32
|
+
ie3 = IE.attach(:url, /buttons1.html/ )
|
33
|
+
assert_equal( "Test page for buttons" , ie3.title)
|
34
|
+
ie3=nil
|
35
|
+
|
36
|
+
#hard to test :url with explicit text
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
@@ -0,0 +1,131 @@
|
|
1
|
+
# feature tests for Buttons
|
2
|
+
# revision: $Revision: 1.32 $
|
3
|
+
|
4
|
+
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') if $0 == __FILE__
|
5
|
+
require 'unittests/setup'
|
6
|
+
|
7
|
+
class TC_Buttons < Test::Unit::TestCase
|
8
|
+
include Watir
|
9
|
+
|
10
|
+
def setup
|
11
|
+
$ie.goto($htmlRoot + "buttons1.html")
|
12
|
+
end
|
13
|
+
|
14
|
+
def goto_frames_page()
|
15
|
+
$ie.goto($htmlRoot + "frame_buttons.html")
|
16
|
+
end
|
17
|
+
|
18
|
+
def aatest_Spinner
|
19
|
+
s = Spinner.new
|
20
|
+
i = 0
|
21
|
+
while(i < 100)
|
22
|
+
sleep 0.05
|
23
|
+
print s.next
|
24
|
+
i+=1
|
25
|
+
end
|
26
|
+
s = nil
|
27
|
+
end
|
28
|
+
|
29
|
+
def aaatest_Button_to_s
|
30
|
+
# i think the tests for to_s should be dropped. The output is not in a nice format to be tested, and the
|
31
|
+
# individual properties are tested in the test_properties method
|
32
|
+
|
33
|
+
b4 = ['name b4',
|
34
|
+
'type button',
|
35
|
+
'id b5',
|
36
|
+
'value Disabled Button',
|
37
|
+
'disabled true']
|
38
|
+
b1 = ['name b1',
|
39
|
+
'type button',
|
40
|
+
'id b2',
|
41
|
+
'value Click Me',
|
42
|
+
'disabled false']
|
43
|
+
|
44
|
+
assert_equal(b4, $ie.button(:name, "b4").to_s)
|
45
|
+
assert_equal(b1, $ie.button(:caption, "Click Me").to_s)
|
46
|
+
assert_equal(b1, $ie.button(:index, 1).to_s)
|
47
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ie.button(:name, "noName").to_s }
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_properties
|
51
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ie.button(:name, "noName").id }
|
52
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ie.button(:name, "noName").name }
|
53
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ie.button(:name, "noName").disabled }
|
54
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ie.button(:name, "noName").type }
|
55
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ie.button(:name, "noName").value }
|
56
|
+
|
57
|
+
assert_equal("b1" , $ie.button(:index, 1).name )
|
58
|
+
assert_equal("b2" , $ie.button(:index, 1).id )
|
59
|
+
assert_equal("button" , $ie.button(:index, 1).type )
|
60
|
+
assert_equal("Click Me" , $ie.button(:index, 1).value )
|
61
|
+
assert_equal(false , $ie.button(:index, 1).disabled )
|
62
|
+
|
63
|
+
assert_equal("b1" , $ie.button(:id, "b2").name )
|
64
|
+
assert_equal("b2" , $ie.button(:id, "b2").id )
|
65
|
+
assert_equal("button" , $ie.button(:id, "b2").type )
|
66
|
+
|
67
|
+
assert_equal("b4" , $ie.button(:index, 2).name )
|
68
|
+
assert_equal("b5" , $ie.button(:index, 2).id )
|
69
|
+
assert_equal("button" , $ie.button(:index, 2).type )
|
70
|
+
assert_equal("Disabled Button" , $ie.button(:index, 2).value )
|
71
|
+
assert_equal(true , $ie.button(:index, 2).disabled )
|
72
|
+
|
73
|
+
assert_equal( "" , $ie.button(:index, 2).title )
|
74
|
+
assert_equal( "this is button1" , $ie.button(:index, 1).title )
|
75
|
+
end
|
76
|
+
|
77
|
+
|
78
|
+
def test_button_using_default
|
79
|
+
# since most of the time, a button will be accessed based on its caption, there is a default way of accessing it....
|
80
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ie.button( "Missing Caption").click }
|
81
|
+
|
82
|
+
$ie.button("Click Me").click
|
83
|
+
assert($ie.contains_text("PASS") )
|
84
|
+
end
|
85
|
+
|
86
|
+
def test_Button_click_only
|
87
|
+
$ie.button(:caption, "Click Me").click
|
88
|
+
assert($ie.contains_text("PASS") )
|
89
|
+
end
|
90
|
+
|
91
|
+
def test_button_click
|
92
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ie.button(:caption, "Missing Caption").click }
|
93
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ie.button(:id, "missingID").click }
|
94
|
+
|
95
|
+
assert_raises(ObjectDisabledException , "ObjectDisabledException was supposed to be thrown" ) { $ie.button(:caption, "Disabled Button").click }
|
96
|
+
|
97
|
+
$ie.button(:caption, "Click Me").click
|
98
|
+
assert($ie.contains_text("PASS") )
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_Button_Exists
|
102
|
+
assert($ie.button(:caption, "Click Me").exists?)
|
103
|
+
assert($ie.button(:caption, "Submit").exists?)
|
104
|
+
assert($ie.button(:name, "b1").exists?)
|
105
|
+
assert($ie.button(:id, "b2").exists?)
|
106
|
+
assert($ie.button(:caption, /sub/i).exists?)
|
107
|
+
|
108
|
+
assert_false($ie.button(:caption, "missingcaption").exists?)
|
109
|
+
assert_false($ie.button(:name, "missingname").exists?)
|
110
|
+
assert_false($ie.button(:id, "missingid").exists?)
|
111
|
+
assert_false($ie.button(:caption, /missing/i).exists?)
|
112
|
+
end
|
113
|
+
|
114
|
+
def test_Button_Enabled
|
115
|
+
assert($ie.button(:caption, "Click Me").enabled?)
|
116
|
+
assert_false($ie.button(:caption, "Disabled Button").enabled?)
|
117
|
+
assert_false($ie.button(:name, "b4").enabled?)
|
118
|
+
assert_false($ie.button(:id, "b5").enabled?)
|
119
|
+
|
120
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ie.button(:name, "noName").enabled? }
|
121
|
+
end
|
122
|
+
|
123
|
+
def test_frame
|
124
|
+
goto_frames_page()
|
125
|
+
|
126
|
+
assert($ie.frame("buttonFrame").button(:caption, "Click Me").enabled?)
|
127
|
+
assert_raises( UnknownObjectException , "UnknownObjectException was supposed to be thrown ( no frame name supplied) " ) { $ie.button(:caption, "Disabled Button").enabled?}
|
128
|
+
end
|
129
|
+
|
130
|
+
end
|
131
|
+
|