watir-classic 3.0.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.
Files changed (213) hide show
  1. data/CHANGES +721 -0
  2. data/LICENSE +34 -0
  3. data/README.rdoc +78 -0
  4. data/VERSION +1 -0
  5. data/bin/watir-console +5 -0
  6. data/lib/watir-classic.rb +14 -0
  7. data/lib/watir-classic/IEDialog/Release/IEDialog.dll +0 -0
  8. data/lib/watir-classic/assertions.rb +44 -0
  9. data/lib/watir-classic/browser.rb +149 -0
  10. data/lib/watir-classic/browsers.rb +7 -0
  11. data/lib/watir-classic/close_all.rb +31 -0
  12. data/lib/watir-classic/container.rb +110 -0
  13. data/lib/watir-classic/contrib/enabled_popup.rb +21 -0
  14. data/lib/watir-classic/contrib/ie-new-process.rb +27 -0
  15. data/lib/watir-classic/contrib/page_checker.rb +29 -0
  16. data/lib/watir-classic/cookies.rb +80 -0
  17. data/lib/watir-classic/core.rb +43 -0
  18. data/lib/watir-classic/dialogs/file_field.rb +34 -0
  19. data/lib/watir-classic/dialogs/javascript.rb +43 -0
  20. data/lib/watir-classic/drag_and_drop_helper.rb +68 -0
  21. data/lib/watir-classic/element.rb +438 -0
  22. data/lib/watir-classic/element_collection.rb +109 -0
  23. data/lib/watir-classic/element_extensions.rb +69 -0
  24. data/lib/watir-classic/exceptions.rb +50 -0
  25. data/lib/watir-classic/form.rb +96 -0
  26. data/lib/watir-classic/frame.rb +47 -0
  27. data/lib/watir-classic/ie-class.rb +767 -0
  28. data/lib/watir-classic/ie-process.rb +47 -0
  29. data/lib/watir-classic/ie.rb +20 -0
  30. data/lib/watir-classic/image.rb +111 -0
  31. data/lib/watir-classic/input_elements.rb +480 -0
  32. data/lib/watir-classic/irb-history.rb +31 -0
  33. data/lib/watir-classic/link.rb +46 -0
  34. data/lib/watir-classic/locator.rb +243 -0
  35. data/lib/watir-classic/logger.rb +19 -0
  36. data/lib/watir-classic/matches.rb +23 -0
  37. data/lib/watir-classic/modal_dialog.rb +72 -0
  38. data/lib/watir-classic/module.rb +12 -0
  39. data/lib/watir-classic/non_control_elements.rb +114 -0
  40. data/lib/watir-classic/options.rb +56 -0
  41. data/lib/watir-classic/page-container.rb +114 -0
  42. data/lib/watir-classic/process.rb +20 -0
  43. data/lib/watir-classic/screen_capture.rb +115 -0
  44. data/lib/watir-classic/supported_elements.rb +172 -0
  45. data/lib/watir-classic/table.rb +224 -0
  46. data/lib/watir-classic/testcase.rb +97 -0
  47. data/lib/watir-classic/util.rb +35 -0
  48. data/lib/watir-classic/version.rb +4 -0
  49. data/lib/watir-classic/wait.rb +41 -0
  50. data/lib/watir-classic/wait_helper.rb +12 -0
  51. data/lib/watir-classic/waiter.rb +98 -0
  52. data/lib/watir-classic/win32.rb +40 -0
  53. data/lib/watir-classic/win32ole.rb +16 -0
  54. data/lib/watir-classic/win32ole/1.8.7/win32ole.so +0 -0
  55. data/lib/watir-classic/win32ole/1.9.3/win32ole.so +0 -0
  56. data/lib/watir-classic/window.rb +68 -0
  57. data/lib/watir-classic/xpath_locator.rb +52 -0
  58. data/rakefile.rb +54 -0
  59. data/unittests/all_tests.rb +10 -0
  60. data/unittests/buttons_xpath_test.rb +68 -0
  61. data/unittests/checkbox_test.rb +163 -0
  62. data/unittests/checkbox_xpath_test.rb +106 -0
  63. data/unittests/click_no_wait_test.rb +23 -0
  64. data/unittests/close_all_test.rb +17 -0
  65. data/unittests/core_tests.rb +17 -0
  66. data/unittests/css_selector_test.rb +44 -0
  67. data/unittests/css_test.rb +38 -0
  68. data/unittests/dialog_test.rb +64 -0
  69. data/unittests/div2_xpath_test.rb +21 -0
  70. data/unittests/div_test.rb +170 -0
  71. data/unittests/div_xpath_test.rb +95 -0
  72. data/unittests/document_standards.rb +63 -0
  73. data/unittests/element_collection_indexes_test.rb +57 -0
  74. data/unittests/element_collections_test.rb +100 -0
  75. data/unittests/element_test.rb +47 -0
  76. data/unittests/errorchecker_test.rb +31 -0
  77. data/unittests/filefield_test.rb +43 -0
  78. data/unittests/filefield_xpath_test.rb +35 -0
  79. data/unittests/form_test.rb +282 -0
  80. data/unittests/form_xpath_test.rb +254 -0
  81. data/unittests/frame_test.rb +165 -0
  82. data/unittests/google_form_test.rb +15 -0
  83. data/unittests/html/JavascriptClick.html +39 -0
  84. data/unittests/html/blankpage.html +11 -0
  85. data/unittests/html/buttons1.html +40 -0
  86. data/unittests/html/checkboxes1.html +89 -0
  87. data/unittests/html/click_no_wait.html +14 -0
  88. data/unittests/html/complex_table.html +35 -0
  89. data/unittests/html/cssTest.html +42 -0
  90. data/unittests/html/depot_store.html +59 -0
  91. data/unittests/html/div.html +92 -0
  92. data/unittests/html/div_xml.html +21 -0
  93. data/unittests/html/fileupload.html +44 -0
  94. data/unittests/html/formTest1.html +38 -0
  95. data/unittests/html/forms2.html +44 -0
  96. data/unittests/html/forms3.html +131 -0
  97. data/unittests/html/forms4.html +26 -0
  98. data/unittests/html/frame_buttons.html +4 -0
  99. data/unittests/html/frame_links.html +4 -0
  100. data/unittests/html/frame_multi.html +5 -0
  101. data/unittests/html/google_india.html +119 -0
  102. data/unittests/html/ie7_document_standards.html +9 -0
  103. data/unittests/html/ie8_document_standards.html +9 -0
  104. data/unittests/html/ie9_document_standards.html +9 -0
  105. data/unittests/html/iframe.html +3 -0
  106. data/unittests/html/iframeTest.html +17 -0
  107. data/unittests/html/iframeTest1.html +7 -0
  108. data/unittests/html/iframeTest2.html +5 -0
  109. data/unittests/html/images/1.gif +0 -0
  110. data/unittests/html/images/2.GIF +0 -0
  111. data/unittests/html/images/3.GIF +0 -0
  112. data/unittests/html/images/button.jpg +0 -0
  113. data/unittests/html/images/circle.jpg +0 -0
  114. data/unittests/html/images/map.GIF +0 -0
  115. data/unittests/html/images/map2.gif +0 -0
  116. data/unittests/html/images/minus.GIF +0 -0
  117. data/unittests/html/images/originaltriangle.jpg +0 -0
  118. data/unittests/html/images/plus.gif +0 -0
  119. data/unittests/html/images/square.jpg +0 -0
  120. data/unittests/html/images/triangle.jpg +0 -0
  121. data/unittests/html/images1.html +65 -0
  122. data/unittests/html/javascriptevents.html +33 -0
  123. data/unittests/html/link_pass.html +11 -0
  124. data/unittests/html/links1.html +37 -0
  125. data/unittests/html/links2.html +11 -0
  126. data/unittests/html/links_multi.html +12 -0
  127. data/unittests/html/list_matters.html +720 -0
  128. data/unittests/html/lists.html +18 -0
  129. data/unittests/html/map_test.html +30 -0
  130. data/unittests/html/modal_dialog.html +10 -0
  131. data/unittests/html/modal_dialog_launcher.html +12 -0
  132. data/unittests/html/multiple_specifiers.html +64 -0
  133. data/unittests/html/nestedFrames.html +6 -0
  134. data/unittests/html/new_browser.html +17 -0
  135. data/unittests/html/pass.html +13 -0
  136. data/unittests/html/popups1.html +59 -0
  137. data/unittests/html/pre.html +29 -0
  138. data/unittests/html/quirks_document_standards.html +8 -0
  139. data/unittests/html/radioButtons1.html +71 -0
  140. data/unittests/html/select_tealeaf.html +54 -0
  141. data/unittests/html/selectboxes1.html +52 -0
  142. data/unittests/html/simple_table.html +25 -0
  143. data/unittests/html/simple_table_buttons.html +104 -0
  144. data/unittests/html/simple_table_columns.html +75 -0
  145. data/unittests/html/table1.html +179 -0
  146. data/unittests/html/tableCell_using_xpath.html +19 -0
  147. data/unittests/html/table_and_tablerow_to_a.html +174 -0
  148. data/unittests/html/textarea.html +30 -0
  149. data/unittests/html/textfields1.html +100 -0
  150. data/unittests/html/textsearch.html +44 -0
  151. data/unittests/html/wallofcheckboxes.html +1003 -0
  152. data/unittests/html/xpath_nbsp.html +11 -0
  153. data/unittests/html/zeroindex.html +11 -0
  154. data/unittests/ie_exists_test.rb +16 -0
  155. data/unittests/ie_mock.rb +94 -0
  156. data/unittests/ie_test.rb +54 -0
  157. data/unittests/images_test.rb +156 -0
  158. data/unittests/images_xpath_test.rb +90 -0
  159. data/unittests/index_specifier_test.rb +31 -0
  160. data/unittests/js_events_test.rb +31 -0
  161. data/unittests/links_multi_test.rb +34 -0
  162. data/unittests/links_test.rb +131 -0
  163. data/unittests/links_xpath_test.rb +38 -0
  164. data/unittests/lists_test.rb +23 -0
  165. data/unittests/map_test.rb +98 -0
  166. data/unittests/minmax_test.rb +37 -0
  167. data/unittests/navigate_test.rb +38 -0
  168. data/unittests/nbsp_xpath_test.rb +16 -0
  169. data/unittests/no_wait_test.rb +28 -0
  170. data/unittests/non_core_tests.rb +12 -0
  171. data/unittests/other/all_tests_concurrent.rb +57 -0
  172. data/unittests/other/navigate_exception_test.rb +24 -0
  173. data/unittests/other/rexml_unit_test.rb +27 -0
  174. data/unittests/other/screen_capture_test.rb +53 -0
  175. data/unittests/other/testcase_method_order_test.rb +36 -0
  176. data/unittests/other/testcase_verify_test.rb +25 -0
  177. data/unittests/other/wait_until_test.rb +102 -0
  178. data/unittests/pagecontainstext_test.rb +69 -0
  179. data/unittests/parent_child_test.rb +27 -0
  180. data/unittests/perf_test.rb +20 -0
  181. data/unittests/pre_test.rb +49 -0
  182. data/unittests/radios_test.rb +181 -0
  183. data/unittests/radios_xpath_test.rb +100 -0
  184. data/unittests/security_setting_test.rb +24 -0
  185. data/unittests/selectbox_test.rb +144 -0
  186. data/unittests/selectbox_xpath_test.rb +102 -0
  187. data/unittests/setup.rb +69 -0
  188. data/unittests/speed_settings_test.rb +67 -0
  189. data/unittests/table_cell_using_xpath_test.rb +34 -0
  190. data/unittests/table_test.rb +296 -0
  191. data/unittests/table_xpath_test.rb +109 -0
  192. data/unittests/test_tests.rb +9 -0
  193. data/unittests/textarea_test.rb +92 -0
  194. data/unittests/textarea_xpath_test.rb +77 -0
  195. data/unittests/textfield_for_ch_char_test.rb +32 -0
  196. data/unittests/textfields_test.rb +184 -0
  197. data/unittests/textfields_xpath_test.rb +110 -0
  198. data/unittests/version_test.rb +15 -0
  199. data/unittests/win32ole_so_test.rb +35 -0
  200. data/unittests/window_tests.rb +10 -0
  201. data/unittests/windows/attach_to_existing_window_test.rb +52 -0
  202. data/unittests/windows/attach_to_new_window_test.rb +74 -0
  203. data/unittests/windows/close_window_test.rb +20 -0
  204. data/unittests/windows/frame_links_test.rb +23 -0
  205. data/unittests/windows/ie-each_test.rb +46 -0
  206. data/unittests/windows/modal_dialog_test.rb +95 -0
  207. data/unittests/windows/new_process_test.rb +24 -0
  208. data/unittests/windows/new_test.rb +58 -0
  209. data/unittests/windows/open_close_test.rb +19 -0
  210. data/unittests/windows/send_keys_test.rb +26 -0
  211. data/unittests/xpath_tests.rb +11 -0
  212. data/watir-rdoc.rb +7 -0
  213. metadata +370 -0
@@ -0,0 +1,110 @@
1
+ # feature tests for Text Fields
2
+
3
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') unless $SETUP_LOADED
4
+ require 'unittests/setup'
5
+
6
+ class TC_Fields_XPath < Test::Unit::TestCase
7
+ include Watir::Exception
8
+
9
+ def setup
10
+ goto_page "textfields1.html"
11
+ end
12
+
13
+ def test_text_field_exists
14
+ assert(browser.text_field(:xpath , "//input[@name='text1']/").exists?)
15
+ assert_false(browser.text_field(:xpath , "//input[@name='missing']/").exists?)
16
+
17
+ assert(browser.text_field(:xpath , "//input[@id='text2']/").exists?)
18
+ assert_false(browser.text_field(:xpath , "//input[@id='alsomissing']/").exists?)
19
+
20
+ #assert(browser.text_field(:xpath , "//input[@beforeText='This Text After']/").exists? )
21
+ #assert(browser.text_field(:xpath , "//input[@afterText='This Text Before']/").exists? )
22
+ end
23
+
24
+ def test_text_field_dragContentsTo
25
+ browser.text_field(:xpath , "//input[@name='text1']/").dragContentsTo(:xpath , "//input[@id='text2']/")
26
+ assert_equal(browser.text_field(:xpath , "//input[@name='text1']/").value, "" )
27
+ assert_equal(browser.text_field(:xpath , "//input[@id='text2']/").value, "goodbye allHello World" )
28
+ end
29
+
30
+ def test_text_field_VerifyContents
31
+ assert(browser.text_field(:xpath , "//input[@name='text1']/").verify_contains("Hello World") )
32
+ assert(browser.text_field(:xpath , "//input[@name='text1']/").verify_contains(/Hello\sW/ ) )
33
+ assert_false(browser.text_field(:xpath , "//input[@name='text1']/").verify_contains("Ruby") )
34
+ assert_false(browser.text_field(:xpath , "//input[@name='text1']/").verify_contains(/R/) )
35
+ assert_raises(UnknownObjectException) { browser.text_field(:xpath , "//input[@name='NoName']/").verify_contains("No field to get a value of") }
36
+
37
+ assert(browser.text_field(:xpath , "//input[@id='text2']/").verify_contains("goodbye all") )
38
+ assert_raises(UnknownObjectException) { browser.text_field(:xpath , "//input[@id='noID']/").verify_contains("No field to get a value of") }
39
+ end
40
+
41
+ def test_text_field_enabled
42
+ assert_false(browser.text_field(:xpath , "//input[@name='disabled']/").enabled? )
43
+ assert(browser.text_field(:xpath , "//input[@name='text1']/").enabled? )
44
+ assert(browser.text_field(:xpath , "//input[@id='text2']/").enabled? )
45
+ end
46
+
47
+ def test_text_field_readOnly
48
+ assert_false(browser.text_field(:xpath , "//input[@name='disabled']/").readonly? )
49
+ assert(browser.text_field(:xpath , "//input[@name='readOnly']/").readonly? )
50
+ assert(browser.text_field(:xpath , "//input[@id='readOnly2']/").readonly? )
51
+ end
52
+
53
+ def test_text_field_value
54
+ assert_raises(UnknownObjectException , "ObjectReadOnlyException was supposed to be thrown" ) { browser.text_field(:xpath , "//input[@name='missing_field']/").append("Some Text") }
55
+ assert_equal( "Hello World" , browser.text_field(:xpath , "//input[@name='text1']/").value )
56
+ end
57
+
58
+ def build_to_s_regex(lhs, rhs)
59
+ Regexp.new("^#{lhs}: +#{rhs}$")
60
+ end
61
+
62
+ def test_text_field_Append
63
+ assert_raises(ObjectReadOnlyException , "ObjectReadOnlyException was supposed to be thrown" ) { browser.text_field(:xpath , "//input[@id='readOnly2']/").append("Some Text") }
64
+ assert_raises(ObjectDisabledException , "ObjectDisabledException was supposed to be thrown" ) { browser.text_field(:xpath , "//input[@name='disabled']/").append("Some Text") }
65
+ assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { browser.text_field(:xpath , "//input[@name='missing_field']/").append("Some Text") }
66
+
67
+ browser.text_field(:xpath , "//input[@name='text1']/").append(" Some Text")
68
+ assert_equal( "Hello World Some Text" , browser.text_field(:xpath , "//input[@name='text1']/").value )
69
+ end
70
+
71
+
72
+ def test_text_field_Clear
73
+ assert_raises(ObjectReadOnlyException , "ObjectReadOnlyException was supposed to be thrown" ) { browser.text_field(:xpath , "//input[@id='readOnly2']/").append("Some Text") }
74
+ assert_raises(ObjectDisabledException , "ObjectReadOnlyException was supposed to be thrown" ) { browser.text_field(:xpath , "//input[@name='disabled']/").append("Some Text") }
75
+ assert_raises(UnknownObjectException , "ObjectReadOnlyException was supposed to be thrown" ) { browser.text_field(:xpath , "//input[@name='missing_field']/").append("Some Text") }
76
+
77
+ browser.text_field(:xpath , "//input[@name='text1']/").clear
78
+ assert_equal( "" , browser.text_field(:xpath , "//input[@name='text1']/").value )
79
+ end
80
+
81
+ def test_text_field_Set
82
+ assert_raises(ObjectReadOnlyException , "ObjectReadOnlyException was supposed to be thrown" ) { browser.text_field(:xpath , "//input[@id='readOnly2']/").append("Some Text") }
83
+ assert_raises(ObjectDisabledException , "ObjectReadOnlyException was supposed to be thrown" ) { browser.text_field(:xpath , "//input[@name='disabled']/").append("Some Text") }
84
+ assert_raises(UnknownObjectException , "ObjectReadOnlyException was supposed to be thrown" ) { browser.text_field(:xpath , "//input[@name='missing_field']/").append("Some Text") }
85
+
86
+ browser.text_field(:xpath , "//input[@name='text1']/").set("watir IE Controller")
87
+ assert_equal( "watir IE Controller" , browser.text_field(:xpath , "//input[@name='text1']/").value )
88
+ end
89
+
90
+ def test_JS_Events
91
+ browser.text_field(:xpath , "//input[@name='events_tester']/").set('p')
92
+
93
+ # the following line has an extra keypress at the begining, as we mimic the delete key being pressed
94
+ assert_equal( "keypresskeydownkeypresskeyup" , browser.text_field(:xpath , "//textarea[@name='events_text']/").value.gsub(/(\n|\r)/ , "") )
95
+ browser.button(:value , "Clear Events Box").click
96
+ browser.text_field(:xpath , "//input[@name='events_tester']/").set('ab')
97
+
98
+ # the following line has an extra keypress at the begining, as we mimic the delete key being pressed
99
+ assert_equal( "keypresskeydownkeypresskeyupkeydownkeypresskeyup" , browser.text_field(:xpath , "//textarea[@name='events_text']/").value.gsub(/(\n|\r)/, "") )
100
+ end
101
+
102
+ def test_password
103
+ browser.text_field(:xpath , "//input[@name='password1']/").set("secret")
104
+ assert( 'secret' , browser.text_field(:xpath , "//input[@name='password1']/").value )
105
+
106
+ browser.text_field(:xpath , "//input[@id='password1']/").set("top_secret")
107
+ assert( 'top_secret' , browser.text_field(:xpath , "//input[@id='password1']/").value )
108
+ end
109
+
110
+ end
@@ -0,0 +1,15 @@
1
+
2
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') unless $SETUP_LOADED
3
+ require 'unittests/setup'
4
+
5
+ class TC_Version < Test::Unit::TestCase
6
+
7
+ def test_full_version
8
+ assert !Watir::IE.version.nil?
9
+ end
10
+
11
+ def test_version_part
12
+ assert Watir::IE.version_parts[0] =~ /^\d+$/
13
+ end
14
+
15
+ end
@@ -0,0 +1,35 @@
1
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..')
2
+ require 'Win32API'
3
+ require 'unittests/setup'
4
+
5
+ # This test makes sure that the win32ole changes will return
6
+ # the dom using GetUnknown, which is added via the win32ole patch
7
+ class TC_Win32OLE < Test::Unit::TestCase
8
+
9
+ def setup
10
+ # this will find the IEDialog.dll file in its build location
11
+ @iedialog_file = (File.expand_path(File.dirname(__FILE__)) + "/../lib/watir-classic/IEDialog/Release/IEDialog.dll").gsub('/', '\\')
12
+
13
+ @ie = Watir::IE.new
14
+ @ie.goto 'www.google.com'
15
+ end
16
+
17
+ def teardown
18
+ @ie.close
19
+ end
20
+
21
+ def test_win32ole_modifications
22
+ fnGetUnknown = Win32API.new(@iedialog_file, 'GetUnknown', ['p', 'p'], 'v')
23
+ intPointer = " " * 4 # will contain the int value of the IUnknown*
24
+ fnGetUnknown.call(@ie.hwnd, intPointer)
25
+ assert_true intPointer
26
+ intArray = intPointer.unpack('L')
27
+ intUnknown = intArray.first
28
+ htmlDoc = WIN32OLE.connect_unknown(intUnknown);
29
+ scriptEngine = htmlDoc.Script
30
+
31
+ # now we get the HTML DOM object!
32
+ body = scriptEngine.document.body
33
+ assert(body.innerHTML =~ /html/)
34
+ end
35
+ end
@@ -0,0 +1,10 @@
1
+ TOPDIR = File.join(File.dirname(__FILE__), '..')
2
+ $LOAD_PATH.unshift TOPDIR
3
+
4
+ ENV['watir_visible'] = 'true'
5
+
6
+ require 'unittests/setup.rb'
7
+
8
+ Dir.chdir TOPDIR
9
+ $window_tests.each {|x| require x}
10
+
@@ -0,0 +1,52 @@
1
+ # feature tests for attaching to existing IE windows
2
+
3
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..') unless $SETUP_LOADED
4
+ require 'unittests/setup'
5
+
6
+ class TC_ExistingWindow < Test::Unit::TestCase
7
+ include Watir
8
+
9
+ def setup
10
+ goto_page 'buttons1.html'
11
+ @original_timeout = IE.attach_timeout
12
+ end
13
+ def teardown
14
+ IE.attach_timeout = @original_timeout
15
+ end
16
+
17
+ def test_find_window
18
+ ie = IE.find(:title, 'Test page for buttons')
19
+ assert_equal("Test page for buttons", ie.title)
20
+ end
21
+
22
+ def test_find_window_misses
23
+ ie = IE.find(:title, 'no such window')
24
+ assert_nil ie
25
+ end
26
+
27
+ def test_missing_window
28
+ IE.attach_timeout = 0.1
29
+ assert_raises(NoMatchingWindowFoundException) { IE.attach(:title, "missing") }
30
+ assert_raises(NoMatchingWindowFoundException) { IE.attach(:title, /missing/) }
31
+ assert_raises(NoMatchingWindowFoundException) { IE.attach(:url, "missing") }
32
+ assert_raises(NoMatchingWindowFoundException) { IE.attach(:url, /missing/) }
33
+ end
34
+
35
+ def test_existing_window
36
+ ie3 = nil
37
+ ie3 = IE.attach(:title , /buttons/i)
38
+ assert_equal("Test page for buttons", ie3.title)
39
+ ie3 = nil
40
+
41
+ ie3 = IE.attach(:title , "Test page for buttons")
42
+ assert_equal("Test page for buttons", ie3.title)
43
+ ie3 = nil
44
+
45
+ ie3 = IE.attach(:url, /buttons1.html/)
46
+ assert_equal("Test page for buttons", ie3.title)
47
+ ie3 = nil
48
+
49
+ #hard to test :url with explicit text
50
+ end
51
+ end
52
+
@@ -0,0 +1,74 @@
1
+ # feature tests for attaching to new IE windows
2
+
3
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..') unless $SETUP_LOADED
4
+ require 'unittests/setup'
5
+ require 'watir-classic/testcase'
6
+
7
+ class TC_NewWindow< Watir::TestCase
8
+ include Watir
9
+
10
+ def setup
11
+ @original_timeout = IE.attach_timeout
12
+ goto_page "new_browser.html"
13
+ end
14
+ def teardown
15
+ IE.attach_timeout = @original_timeout
16
+ end
17
+
18
+ def test_simply_attach_to_new_window
19
+ IE.attach_timeout = 0.2
20
+ browser.link(:text, 'New Window').click
21
+ ie_new = IE.attach(:title, 'Pass Page')
22
+ assert(ie_new.text.include?('PASS'))
23
+ ie_new.close
24
+ end
25
+
26
+ def test_attach_to_new_window_using_click_no_wait
27
+ # this test is sometimes failing with a "Canvas does not allow drawing" error
28
+ # this is with IE7. I think the problem could be with the highlighting of the
29
+ # button from the separate process.
30
+ browser.link(:text, 'New Window').click_no_wait
31
+ IE.attach_timeout = 6.0
32
+ ie_new = IE.attach(:title, 'Pass Page')
33
+ assert(ie_new.text.include?('PASS'))
34
+ ie_new.close
35
+ end
36
+
37
+ def test_click_no_wait_works_in_a_container
38
+ browser.p(:index, 0).link(:text, 'New Window').click_no_wait
39
+ IE.attach_timeout = 6.0
40
+ ie_new = IE.attach(:title, 'Pass Page')
41
+ assert(ie_new.text.include?('PASS'))
42
+ ie_new.close
43
+ end
44
+
45
+ def test_attach_to_slow_window_works_with_delay
46
+ browser.span(:text, 'New Window Slowly').click
47
+ IE.attach_timeout = 4.0
48
+ sleep 1.0
49
+ ie_new = IE.attach(:title, 'Test page for buttons')
50
+ assert(ie_new.text.include?('Blank page to fill in the frames'))
51
+ ie_new.close
52
+ end
53
+
54
+ def test_attach_to_slow_window_works_without_waiting
55
+ browser.span(:text, 'New Window Slowly').click
56
+ IE.attach_timeout = 3.0
57
+ ie_new = IE.attach(:title, 'Test page for buttons')
58
+ assert(ie_new.text.include?('Blank page to fill in the frames'))
59
+ ie_new.close
60
+ end
61
+
62
+ def test_attach_timesout_when_window_takes_too_long
63
+ IE.attach_timeout = 0.2
64
+ browser.text_field(:name, 'delay').set('2')
65
+ browser.span(:text, 'New Window Slowly').click
66
+ assert_raise(Watir::Exception::NoMatchingWindowFoundException) do
67
+ IE.attach(:title, 'Test page for buttons')
68
+ end
69
+ sleep 2.0 # clean up
70
+ IE.attach_timeout = 6.0
71
+ IE.attach(:title, 'Test page for buttons').close
72
+ end
73
+
74
+ end
@@ -0,0 +1,20 @@
1
+ # feature tests for closed windows
2
+
3
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..') unless $SETUP_LOADED
4
+ require 'unittests/setup'
5
+
6
+ class TC_CloseWindow < Watir::TestCase
7
+ execute :sequentially
8
+
9
+ def setup
10
+ goto_page "new_browser.html"
11
+ end
12
+
13
+ # reproduces defect http://jira.openqa.org/browse/WTR-16
14
+ def test_close_window_with_button
15
+ browser.link(:text, 'New Window').click
16
+ ie_new = Watir::IE.attach(:title, 'Pass Page')
17
+ assert(ie_new.text.include?('PASS'))
18
+ assert_nothing_raised {ie_new.close}
19
+ end
20
+ end
@@ -0,0 +1,23 @@
1
+ # tests of click_no_wait for links in frames
2
+
3
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..') unless $SETUP_LOADED
4
+ require 'unittests/setup'
5
+
6
+ class TC_Frame_Links < Test::Unit::TestCase
7
+
8
+ def setup
9
+ goto_page "frame_links.html"
10
+ end
11
+
12
+ def test_click_in_a_frame
13
+ browser.frame(:name, 'linkFrame').link(:text, 'test1').click
14
+ assert(browser.frame(:name, 'linkFrame').text.include?('Links2-Pass'))
15
+ end
16
+
17
+ def test_click_no_wait_in_a_frame
18
+ browser.frame(:name, 'linkFrame').link(:text, 'test1').click_no_wait
19
+ Watir::Wait.until(10){browser.frame(:name, 'linkFrame').text.include?('Links2-Pass')}
20
+ assert(browser.frame(:name, 'linkFrame').text.include?('Links2-Pass'))
21
+ end
22
+
23
+ end
@@ -0,0 +1,46 @@
1
+ # Not intended to be run as part of a larger suite.
2
+
3
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..') unless $SETUP_LOADED
4
+ require 'test/unit'
5
+ require 'watir-classic'
6
+ require 'watir-classic/process'
7
+
8
+ class TC_IE_Each < Test::Unit::TestCase
9
+ def setup
10
+ assert_equal 0, Watir::IE.process_count
11
+ @hits = 0
12
+ @ie = []
13
+ end
14
+
15
+ def hit_me
16
+ @hits += 1
17
+ end
18
+
19
+ def test_zero_windows
20
+ Watir::IE.each {hit_me}
21
+ assert_equal 0, @hits
22
+ end
23
+
24
+ def test_one_window
25
+ @ie << Watir::IE.new_process
26
+ Watir::IE.each {hit_me}
27
+ assert_equal 1, @hits
28
+ end
29
+
30
+ def test_two_windows
31
+ @ie << Watir::IE.new_process
32
+ @ie << Watir::IE.new_process
33
+ Watir::IE.each {hit_me}
34
+ assert_equal 2, @hits
35
+ end
36
+
37
+ def test_return_type
38
+ @ie << Watir::IE.new_process
39
+ Watir::IE.each {|ie| assert_equal(Watir::IE, ie.class)}
40
+ end
41
+
42
+ def teardown
43
+ @ie.each {|ie| ie.close }
44
+ Watir::Wait.until {Watir::IE.process_count == 0}
45
+ end
46
+ end
@@ -0,0 +1,95 @@
1
+ # feature tests for modal web dialog support
2
+
3
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..') unless $SETUP_LOADED
4
+ require 'unittests/setup'
5
+ require 'watir-classic/close_all'
6
+
7
+ class TC_ModalDialog < Watir::TestCase
8
+ include Watir
9
+
10
+ def setup
11
+ @original_timeout = IE.attach_timeout
12
+ goto_page 'modal_dialog_launcher.html'
13
+ IE.attach_timeout = 10.0
14
+ end
15
+
16
+ def teardown
17
+ if browser
18
+ while browser.modal_dialog.exists?(0) do
19
+ browser.modal_dialog.close
20
+ sleep 0.5
21
+ end
22
+ end
23
+ end
24
+
25
+
26
+ def test_modal_simple_use_case
27
+ browser.button(:value, 'Launch Dialog').click_no_wait
28
+ modal = browser.modal_dialog
29
+
30
+ assert(modal.text.include?('Enter some text:'))
31
+ modal.text_field(:name, 'modal_text').set('hello')
32
+ modal.button(:value, 'Close').click
33
+ assert_equal('hello', browser.text_field(:name, 'modaloutput').value)
34
+ end
35
+
36
+ def test_wait_should_not_block
37
+ browser.button(:value, 'Launch Dialog').click_no_wait
38
+ modal = browser.modal_dialog
39
+
40
+ modal.text_field(:name, 'modal_text').set('hello')
41
+ modal.wait
42
+
43
+ modal.button(:value, 'Close').click
44
+ end
45
+
46
+ def test_modal_dialog_use_case_default
47
+ browser.button(:value, 'Launch Dialog').click_no_wait
48
+
49
+ modal = browser.modal_dialog
50
+ assert_not_nil modal
51
+
52
+ # Make sure that we have attached to modal and that the hwnd method
53
+ # is working properly to show the HWND of our parent.
54
+ assert_not_equal(browser.hwnd, modal.hwnd)
55
+
56
+ # Once attached just treat the modal_dialog like any IE or Frame
57
+ # object.
58
+ assert(modal.text.include?('Enter some text:'))
59
+ modal.text_field(:name, 'modal_text').set('hello')
60
+ modal.button(:value, 'Close').click
61
+
62
+ assert !browser.modal_dialog.exists?
63
+ assert_equal('hello', browser.text_field(:name, 'modaloutput').value)
64
+ end
65
+
66
+ def test_double_modal
67
+ browser.button(:value, 'Launch Dialog').click_no_wait
68
+ browser.modal_dialog.button(:text, 'Another Modal').click_no_wait
69
+ assert_nothing_raised {
70
+ Watir::Wait.until {browser.modal_dialog.title == 'Pass Page'}
71
+ }
72
+ browser.modal_dialog.close
73
+ browser.modal_dialog.close
74
+ end
75
+
76
+ def xtest_modal_with_frames
77
+ browser.button(:value, 'Launch Dialog').click_no_wait
78
+ modal1 = browser.modal_dialog
79
+ modal1.button(:value, 'Modal with Frames').click_no_wait
80
+ modal2 = browser.modal_dialog
81
+ modal2.frame('buttonFrame').button(:value, 'Click Me').click
82
+ assert(modal2.frame('buttonFrame').text.include?('PASS'))
83
+ modal2.frame('buttonFrame').button(:value, 'Close Window').click
84
+ modal1.close
85
+ end
86
+
87
+ def test_modal_exists
88
+ browser.button(:value, 'Launch Dialog').click_no_wait
89
+ modal = browser.modal_dialog
90
+ assert(modal.exists?)
91
+ modal.button(:value, 'Close').click
92
+ assert_false(modal.exists?)
93
+ end
94
+
95
+ end