watir 1.4.1

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.
Files changed (98) hide show
  1. data/readme.rb +211 -0
  2. data/unittests/WindowLogonExample.rb +30 -0
  3. data/unittests/WindowLogonExtra.rb +7 -0
  4. data/unittests/all_tests.rb +10 -0
  5. data/unittests/all_tests_concurrent.rb +57 -0
  6. data/unittests/attachToExistingWindow_test.rb +40 -0
  7. data/unittests/buttons_test.rb +131 -0
  8. data/unittests/checkbox_test.rb +149 -0
  9. data/unittests/core_tests.rb +9 -0
  10. data/unittests/css_test.rb +60 -0
  11. data/unittests/div_test.rb +179 -0
  12. data/unittests/errorchecker_test.rb +29 -0
  13. data/unittests/filefield_test.rb +35 -0
  14. data/unittests/form_test.rb +279 -0
  15. data/unittests/frame_test.rb +141 -0
  16. data/unittests/html/blankpage.html +12 -0
  17. data/unittests/html/buttons1.html +40 -0
  18. data/unittests/html/checkboxes1.html +69 -0
  19. data/unittests/html/complex_table.html +36 -0
  20. data/unittests/html/cssTest.html +42 -0
  21. data/unittests/html/div.html +105 -0
  22. data/unittests/html/fileupload.html +45 -0
  23. data/unittests/html/formTest1.html +39 -0
  24. data/unittests/html/forms2.html +45 -0
  25. data/unittests/html/forms3.html +132 -0
  26. data/unittests/html/forms4.html +27 -0
  27. data/unittests/html/frame_buttons.html +4 -0
  28. data/unittests/html/frame_links.html +4 -0
  29. data/unittests/html/frame_multi.html +5 -0
  30. data/unittests/html/iframeTest.html +13 -0
  31. data/unittests/html/iframeTest1.html +7 -0
  32. data/unittests/html/iframeTest2.html +6 -0
  33. data/unittests/html/images/1.gif +0 -0
  34. data/unittests/html/images/2.GIF +0 -0
  35. data/unittests/html/images/3.GIF +0 -0
  36. data/unittests/html/images/button.jpg +0 -0
  37. data/unittests/html/images/circle.jpg +0 -0
  38. data/unittests/html/images/minus.GIF +0 -0
  39. data/unittests/html/images/originaltriangle.jpg +0 -0
  40. data/unittests/html/images/plus.gif +0 -0
  41. data/unittests/html/images/square.jpg +0 -0
  42. data/unittests/html/images/triangle.jpg +0 -0
  43. data/unittests/html/images1.html +52 -0
  44. data/unittests/html/javascriptevents.html +39 -0
  45. data/unittests/html/link_pass.html +11 -0
  46. data/unittests/html/links1.html +37 -0
  47. data/unittests/html/links2.html +11 -0
  48. data/unittests/html/nestedFrames.html +6 -0
  49. data/unittests/html/pass.html +10 -0
  50. data/unittests/html/popups1.html +60 -0
  51. data/unittests/html/radioButtons1.html +71 -0
  52. data/unittests/html/select_tealeaf.html +54 -0
  53. data/unittests/html/selectboxes1.html +55 -0
  54. data/unittests/html/simple_table.html +26 -0
  55. data/unittests/html/simple_table_buttons.html +104 -0
  56. data/unittests/html/simple_table_columns.html +76 -0
  57. data/unittests/html/table1.html +142 -0
  58. data/unittests/html/textarea.html +30 -0
  59. data/unittests/html/textfields1.html +87 -0
  60. data/unittests/html/textsearch.html +44 -0
  61. data/unittests/ie_mock.rb +93 -0
  62. data/unittests/ie_test.rb +50 -0
  63. data/unittests/images_test.rb +179 -0
  64. data/unittests/iostring.rb +30 -0
  65. data/unittests/iostring_test.rb +48 -0
  66. data/unittests/js_events_test.rb +77 -0
  67. data/unittests/jscriptExtraAlert.rb +6 -0
  68. data/unittests/jscriptExtraConfirmCancel.rb +7 -0
  69. data/unittests/jscriptExtraConfirmOk.rb +7 -0
  70. data/unittests/jscriptPushButton.rb +5 -0
  71. data/unittests/jscript_test.rb +57 -0
  72. data/unittests/links_test.rb +169 -0
  73. data/unittests/minmax_test.rb +31 -0
  74. data/unittests/navigate_test.rb +56 -0
  75. data/unittests/non_core_tests.rb +9 -0
  76. data/unittests/pagecontainstext_test.rb +49 -0
  77. data/unittests/popups_test.rb +44 -0
  78. data/unittests/radios_test.rb +164 -0
  79. data/unittests/screen_capture_test.rb +53 -0
  80. data/unittests/selectbox_test.rb +197 -0
  81. data/unittests/send_keys_test.rb +29 -0
  82. data/unittests/setup.rb +47 -0
  83. data/unittests/table_test.rb +306 -0
  84. data/unittests/textAreafields_test.rb +81 -0
  85. data/unittests/textfields_test.rb +239 -0
  86. data/watir.rb +3744 -0
  87. data/watir/AutoItX3.dll +0 -0
  88. data/watir/WindowHelper.rb +47 -0
  89. data/watir/camel_case.rb +37 -0
  90. data/watir/clickJSDialog.rb +19 -0
  91. data/watir/cookiemanager.rb +53 -0
  92. data/watir/exceptions.rb +60 -0
  93. data/watir/screen_capture.rb +115 -0
  94. data/watir/setFileDialog.rb +16 -0
  95. data/watir/testUnitAddons.rb +47 -0
  96. data/watir/watir_simple.rb +475 -0
  97. data/watir/winClicker.rb +505 -0
  98. metadata +152 -0
@@ -0,0 +1,44 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
+ <html>
3
+ <head>
4
+ </head>
5
+ <body>
6
+ To be, or not to be: that is the question:<br>
7
+ Whether 'tis nobler in the mind to suffer<br>
8
+ The slings and arrows of outrageous fortune,<br>
9
+ Or to take arms against a sea of troubles,<br>
10
+ And by opposing end them? To die: to sleep:<br>
11
+ No more; and by a sleep to say we end<br>
12
+ The heartache and the thousand natural shocks<br>
13
+ That flesh is heir to,--'t is a consummation<br>
14
+ Devoutly to be wish'd. To die, to sleep;<br>
15
+ To sleep: perchance to dream: ay, there's the rub:<br>
16
+ For in that sleep of death what dreams may come,<br>
17
+ When we have shuffled off this mortal coil,<br>
18
+ Must give us pause: there's the respect<br>
19
+ That makes calamity of so long life;<br>
20
+ For who would bear the whips and scorns of time,<br>
21
+ The oppressor's wrong, the proud man's contumely,<br>
22
+ The pangs of despised love, the law's delay,<br>
23
+ The insolence of office and the spurns<br>
24
+ That patient merit of the unworthy takes,<br>
25
+ When he himself might his quietus make<br>
26
+ With a bare bodkin? who would fardels bear,<br>
27
+ To grunt and sweat under a weary life,<br>
28
+ But that the dread of something after death,<br>
29
+ The undiscover'd country from whose bourn<br>
30
+ No traveller returns, puzzles the will<br>
31
+ And makes us rather bear those ills we have<br>
32
+ Than fly to others that we know not of?<br>
33
+ Thus conscience does make cowards of us all;<br>
34
+ And thus the native hue of resolution<br>
35
+ Is sicklied o'er with the pale cast of thought,<br>
36
+ And enterprises of great pith and moment<br>
37
+ With this regard their currents turn awry,<br>
38
+ And lose the name of action.<br>
39
+ <br>
40
+ Messages 42<br>
41
+ <br>
42
+ <br>
43
+ </body>
44
+ </html>
@@ -0,0 +1,93 @@
1
+ # mock library for testing the IE controller
2
+ require 'watir'
3
+
4
+ class FakeFrame
5
+ def length
6
+ return 0
7
+ end
8
+ end
9
+
10
+ class FakeAll
11
+ def initialize(doc)
12
+ @doc = doc
13
+ end
14
+ def tags(tag)
15
+ @doc.links
16
+ end
17
+ end
18
+
19
+
20
+ class FakeDoc
21
+
22
+ attr_accessor :links, :all
23
+
24
+ def initialize()
25
+ @links = ""
26
+ @all = FakeAll.new(self)
27
+ end
28
+
29
+ def frames
30
+ return FakeFrame.new()
31
+ end
32
+
33
+ def readyState
34
+ return "complete"
35
+ end
36
+
37
+ def addLink(value)
38
+ if @links.nil?
39
+ @links = value
40
+ else
41
+ @links << value
42
+ end
43
+ end
44
+
45
+ def url
46
+ return "file://fake"
47
+ end
48
+
49
+ end
50
+
51
+ class StubExplorer
52
+
53
+ attr_accessor :timeToWait
54
+
55
+ def initialize()
56
+ @timeToWait = 1
57
+ @visible = $HIDE_IE
58
+ @document = FakeDoc.new()
59
+ end
60
+
61
+ def document
62
+ return @document
63
+ end
64
+
65
+ def busy ()
66
+ sleep @timeToWait
67
+ return FALSE
68
+ end
69
+
70
+ def readyState
71
+ return 4
72
+ end
73
+
74
+ def visible=(value)
75
+ end
76
+
77
+ end
78
+
79
+ class TestIE < Watir::IE
80
+
81
+ def create_browser_window
82
+ @ie = StubExplorer.new()
83
+ end
84
+
85
+ def addLink(link)
86
+ @ie.document.addLink(link)
87
+ end
88
+
89
+ def setTimeToWait(time = 1)
90
+ @ie.timeToWait = time
91
+ end
92
+
93
+ end
@@ -0,0 +1,50 @@
1
+ # Unit Test for Internet Explorer
2
+ # revision: $Revision: 1.14 $
3
+
4
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') if $0 == __FILE__
5
+ require 'win32ole'
6
+ require 'unittests/ie_mock'
7
+ require 'test/unit'
8
+
9
+ class TC_ie < Test::Unit::TestCase
10
+ include Watir
11
+
12
+ def setup
13
+ @faked_ie = TestIE.new
14
+ end
15
+
16
+ def test_waitForIE
17
+ wait_time = 1
18
+ # @faked_ie.logger.level = Logger::DEBUG
19
+
20
+ @faked_ie.setTimeToWait wait_time
21
+ begin_time = Time.now
22
+ @faked_ie.wait
23
+ elapsed_time = Time.now - begin_time
24
+ assert_in_delta(wait_time, elapsed_time, 0.5)
25
+ end
26
+
27
+ # is this correct?
28
+ def test_getLink_ByIndexReturnsNilOnNoLinks
29
+ assert_nil(@faked_ie.getLink(:index, 1))
30
+ assert_nil(@faked_ie.getLink(:index, 1))
31
+ end
32
+
33
+ def test_getLink_ByBadHow
34
+ @faked_ie.addLink "foo"
35
+ assert_raise(MissingWayOfFindingObjectException) do
36
+ @faked_ie.getLink(:no_such_mechanism, "verifying error handling")
37
+ end
38
+ end
39
+
40
+ # is this correct?
41
+ def test_getLink_ByUrlReturnsNilOnNoLinks
42
+ assert_nil(@faked_ie.getLink(:url, "whatever"))
43
+ end
44
+
45
+ # is this correct?
46
+ def test_getLink_ByTextReturnsNilOnNoLinks
47
+ assert_nil(@faked_ie.getLink(:text, "whatever"))
48
+ end
49
+ end
50
+
@@ -0,0 +1,179 @@
1
+ # feature tests for Images
2
+ # revision: $Revision: 1.32.2.1 $
3
+
4
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') if $0 == __FILE__
5
+ require 'unittests/setup'
6
+ require 'ftools'
7
+ require 'webrick'
8
+ require 'watir/cookiemanager'
9
+
10
+ class TC_Images < Test::Unit::TestCase
11
+ include Watir
12
+
13
+ def setup
14
+ gotoImagePage
15
+ @saved_img_path = build_path("sample.img.dat");
16
+ end
17
+
18
+ def gotoImagePage()
19
+ $ie.goto($htmlRoot + "images1.html")
20
+ end
21
+
22
+ def test_imageExists
23
+ assert_false( $ie.image(:name , "missing_name").exists? )
24
+ assert( $ie.image(:name , "circle").exists? )
25
+ assert( $ie.image(:name , /circ/ ).exists? )
26
+
27
+ assert_false( $ie.image(:id , "missing_id").exists? )
28
+ assert( $ie.image(:id , "square").exists? )
29
+ assert( $ie.image(:id , /squ/ ).exists? )
30
+
31
+ assert_false( $ie.image(:src, "missingsrc.gif").exists? )
32
+
33
+ # BP -- This fails for me but not for Paul. It doesn't make sense to me that it should pass.
34
+ # assert( $ie.image(:src , "file:///#{$myDir}/html/images/triangle.jpg").exists? )
35
+ assert( $ie.image(:src , /triangle/ ).exists? )
36
+
37
+ assert( $ie.image(:alt , "circle" ).exists? )
38
+ assert( $ie.image(:alt , /cir/ ).exists? )
39
+
40
+ assert_false( $ie.image(:alt , "triangle" ).exists? )
41
+ assert_false( $ie.image(:alt , /tri/ ).exists? )
42
+ end
43
+
44
+ def test_image_click
45
+ assert_raises(UnknownObjectException ) { $ie.image(:name, "no_image_with_this").click }
46
+ assert_raises(UnknownObjectException ) { $ie.image(:id, "no_image_with_this").click }
47
+ assert_raises(UnknownObjectException ) { $ie.image(:src, "no_image_with_this").click}
48
+ assert_raises(UnknownObjectException ) { $ie.image(:alt, "no_image_with_this").click}
49
+
50
+ # test for bug 1882
51
+ $ie.text_field(:name , "text1").clear
52
+ $ie.button(:value , /Pos/ ).click
53
+ assert_equal('clicked' , $ie.text_field(:name , "text1" ).value )
54
+
55
+ # # test for disabled button
56
+ # assert_false( $ie.image(:name , 'disabler_test').disabled )
57
+ # $ie.button(:name , 'disable_img').click
58
+ #
59
+ # assert( $ie.image(:name , 'disabler_test').disabled )
60
+ # $ie.button(:name , 'disable_img').click
61
+
62
+ $ie.image(:src, /button/).click
63
+ assert($ie.contains_text("PASS") )
64
+
65
+ end
66
+
67
+
68
+
69
+ def test_imageHasLoaded
70
+ assert_raises(UnknownObjectException ) { $ie.image(:name, "no_image_with_this").hasLoaded? }
71
+ assert_raises(UnknownObjectException ) { $ie.image(:id, "no_image_with_this").hasLoaded? }
72
+ assert_raises(UnknownObjectException ) { $ie.image(:src, "no_image_with_this").hasLoaded? }
73
+ assert_raises(UnknownObjectException ) { $ie.image(:alt, "no_image_with_this").hasLoaded? }
74
+
75
+ assert_false( $ie.image(:name, "themissingimage").hasLoaded? )
76
+ assert( $ie.image(:name, "circle").hasLoaded? )
77
+
78
+ assert( $ie.image(:alt, "circle").hasLoaded? )
79
+ assert( $ie.image(:alt, /cir/ ).hasLoaded? )
80
+ end
81
+
82
+ def test_image_properties
83
+ assert_raises(UnknownObjectException ) { $ie.image(:name, "no_image_with_this").hasLoaded? }
84
+ assert_raises(UnknownObjectException ) { $ie.image(:id, "no_image_with_this").hasLoaded? }
85
+ assert_raises(UnknownObjectException ) { $ie.image(:src, "no_image_with_this").hasLoaded? }
86
+ assert_raises(UnknownObjectException ) { $ie.image(:index, 82).hasLoaded? }
87
+
88
+ assert_raises(UnknownObjectException ) { $ie.image(:index, 82).name }
89
+ assert_raises(UnknownObjectException ) { $ie.image(:index, 82).id }
90
+ assert_raises(UnknownObjectException ) { $ie.image(:index, 82).src }
91
+ assert_raises(UnknownObjectException ) { $ie.image(:index, 82).value }
92
+ assert_raises(UnknownObjectException ) { $ie.image(:index, 82).height }
93
+ assert_raises(UnknownObjectException ) { $ie.image(:index, 82).width }
94
+ assert_raises(UnknownObjectException ) { $ie.image(:index, 82).fileCreatedDate }
95
+ assert_raises(UnknownObjectException ) { $ie.image(:index, 82).fileSize }
96
+ assert_raises(UnknownObjectException ) { $ie.image(:index, 82).alt}
97
+
98
+
99
+ assert_equal( "image" , $ie.image(:index, 2).type )
100
+ assert_equal( "" , $ie.image(:index, 2).name )
101
+ assert_equal( "square" , $ie.image(:index, 2).id )
102
+ assert_match( /square\.jpg/i ,$ie.image(:index, 2).src )
103
+ assert_equal( "" , $ie.image(:index, 2).value )
104
+ assert_equal( "88" , $ie.image(:index, 2).height )
105
+ assert_equal( "88" , $ie.image(:index, 2).width )
106
+
107
+
108
+ # this line fails, as the date is when it is installed on the local oc, not the date the file was really created
109
+ #assert_equal( "03/10/2005" , $ie.image(:index, 2).fileCreatedDate )
110
+ assert_equal( "788", $ie.image(:index, 2).fileSize )
111
+
112
+ # alt text
113
+ assert_equal('circle' , $ie.image(:index, 6).alt)
114
+ assert_equal( "" , $ie.image(:index, 2).alt)
115
+
116
+
117
+ # to string tests -- output should be verified!
118
+ puts $ie.image(:name , "circle").to_s
119
+ puts $ie.image(:index , 2).to_s
120
+ end
121
+
122
+ def test_image_iterator
123
+ assert_equal(6 , $ie.images.length)
124
+ assert_equal("" , $ie.images[2].name )
125
+ assert_equal("square" , $ie.images[2].id )
126
+ assert_match(/square/ , $ie.images[2].src )
127
+
128
+ index = 1
129
+ $ie.images.each do |i|
130
+ assert_equal( $ie.image(:index, index).id , i.id )
131
+ assert_equal( $ie.image(:index, index).name , i.name )
132
+ assert_equal( $ie.image(:index, index).src , i.src )
133
+ assert_equal( $ie.image(:index, index).height , i.height )
134
+ assert_equal( $ie.image(:index, index).width , i.width )
135
+
136
+ index+=1
137
+ end
138
+ assert_equal( index-1 , $ie.images.length )
139
+ end
140
+
141
+ def test_save_local_image
142
+ gotoImagePage()
143
+ safe_file_block(1) do
144
+ assert(File.compare(@saved_img_path, $ie.images[1].src.gsub(/^file:\/\/\//, '')))
145
+ end
146
+ safe_file_block(2) do
147
+ assert(File.compare(@saved_img_path, $ie.images[2].src.gsub(/^file:\/\/\//, '')))
148
+ end
149
+ end
150
+
151
+ def test_save_local_image_returns_original_page
152
+ gotoImagePage()
153
+ safe_file_block(1) {}
154
+ assert_equal(6 , $ie.images.length)
155
+ end
156
+
157
+ def safe_file_block(*imgstosave)
158
+ clean_saved_image
159
+ begin
160
+ imgstosave.each {|imgidx| $ie.images[imgidx].save(build_windows_path("sample.img.dat"))}
161
+ yield
162
+ ensure
163
+ clean_saved_image
164
+ end
165
+ end
166
+
167
+ def clean_saved_image
168
+ File.unlink(@saved_img_path) if (File.exists?(@saved_img_path))
169
+ end
170
+
171
+ def build_windows_path(part)
172
+ build_path(part).gsub(/\//, "\\")
173
+ end
174
+
175
+ def build_path(part)
176
+ "#{$myDir}/#{part}"
177
+ end
178
+ end
179
+
@@ -0,0 +1,30 @@
1
+ # class useful for testing output to stdout
2
+ class IOString < String
3
+ def write x
4
+ self.<< x
5
+ end
6
+ def readline!
7
+ line = slice!(/^.*(\n|$)/)
8
+ if $1 == "\n" then line.chop!
9
+ elsif line == "" then nil
10
+ else line
11
+ end
12
+ end
13
+ def puts( x )
14
+ stdout_orig = $stdout
15
+ $stdout = self
16
+ Kernel.puts x
17
+ $stdout = stdout_orig
18
+ end
19
+ end
20
+
21
+ module MockStdoutTestCase
22
+ def setup
23
+ @mockout = IOString.new ""
24
+ end
25
+ def teardown
26
+ $stdout = STDOUT
27
+ end
28
+ end
29
+
30
+
@@ -0,0 +1,48 @@
1
+ # unit tests for IOString in iostring.rb
2
+
3
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') if $0 == __FILE__
4
+ require 'unittests/iostring'
5
+ require 'test/unit'
6
+
7
+ class IOStringTests < Test::Unit::TestCase
8
+ include MockStdoutTestCase
9
+ def setup
10
+ @mockout = IOString.new ""
11
+ $stdout = @mockout
12
+ end
13
+ def test_io_string_write
14
+ puts "hello"
15
+ assert_equal "hello\n", @mockout
16
+ end
17
+ def test_iostring_readline
18
+ puts "hello"
19
+ puts "there"
20
+ $stdout = STDOUT
21
+ assert_equal "hello", @mockout.readline!
22
+ assert_equal "there", @mockout.readline!
23
+ end
24
+ def test_iostring_realine_no_final_cr
25
+ print "hello"
26
+ $stdout = STDOUT
27
+ assert_equal "hello", @mockout.readline!
28
+ end
29
+ def test_ending_with_cr
30
+ puts "hello"
31
+ @mockout.readline!
32
+ assert_equal nil, @mockout.readline!
33
+ end
34
+ def test_ending_without_cr
35
+ print "hello"
36
+ @mockout.readline!
37
+ assert_equal nil, @mockout.readline!
38
+ end
39
+ def test_blank_line
40
+ puts "hello"
41
+ puts
42
+ puts "there"
43
+ @mockout.readline!
44
+ assert_equal "", @mockout.readline!
45
+ end
46
+ end
47
+
48
+