firewatir 1.6.5 → 1.6.6.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. data/CHANGES +461 -0
  2. data/LICENSE +31 -31
  3. data/README.rdoc +112 -0
  4. data/VERSION +1 -0
  5. data/lib/firewatir.rb +41 -40
  6. data/lib/firewatir/container.rb +491 -491
  7. data/lib/firewatir/document.rb +239 -239
  8. data/lib/firewatir/element.rb +1364 -1364
  9. data/lib/firewatir/element_collections.rb +314 -314
  10. data/lib/firewatir/elements/button.rb +15 -15
  11. data/lib/firewatir/elements/file_field.rb +29 -29
  12. data/lib/firewatir/elements/form.rb +40 -40
  13. data/lib/firewatir/elements/frame.rb +55 -55
  14. data/lib/firewatir/elements/hidden.rb +56 -56
  15. data/lib/firewatir/elements/image.rb +139 -139
  16. data/lib/firewatir/elements/input_element.rb +44 -44
  17. data/lib/firewatir/elements/link.rb +76 -76
  18. data/lib/firewatir/elements/non_control_element.rb +53 -53
  19. data/lib/firewatir/elements/non_control_elements.rb +108 -108
  20. data/lib/firewatir/elements/not_used.rb +278 -278
  21. data/lib/firewatir/elements/option.rb +130 -130
  22. data/lib/firewatir/elements/radio_check_common.rb +163 -163
  23. data/lib/firewatir/elements/select_list.rb +188 -188
  24. data/lib/firewatir/elements/table.rb +218 -218
  25. data/lib/firewatir/elements/table_cell.rb +54 -54
  26. data/lib/firewatir/elements/table_row.rb +100 -100
  27. data/lib/firewatir/elements/text_field.rb +218 -218
  28. data/lib/firewatir/exceptions.rb +10 -10
  29. data/lib/firewatir/firefox.rb +984 -1040
  30. data/lib/firewatir/jssh_socket.rb +100 -100
  31. data/lib/firewatir/winClicker.rb +122 -122
  32. data/lib/firewatir/x11.rb +192 -192
  33. data/rakefile.rb +15 -0
  34. data/unittests/attach_to_new_window_test.rb +49 -49
  35. data/unittests/bug_fixes_test.rb +195 -195
  36. data/unittests/buttons_xpath_test.rb +88 -88
  37. data/unittests/checkbox_test.rb +158 -158
  38. data/unittests/checkbox_xpath_test.rb +107 -107
  39. data/unittests/div_test.rb +275 -275
  40. data/unittests/ff_test.rb +47 -0
  41. data/unittests/filefield_test.rb +49 -49
  42. data/unittests/filefield_xpath_test.rb +35 -35
  43. data/unittests/form_test.rb +296 -296
  44. data/unittests/frame_test.rb +159 -159
  45. data/unittests/hidden_test.rb +85 -85
  46. data/unittests/hidden_xpath_test.rb +72 -72
  47. data/unittests/html/JavascriptClick.html +42 -42
  48. data/unittests/html/blankpage.html +11 -11
  49. data/unittests/html/buttons1.html +61 -61
  50. data/unittests/html/checkboxes1.html +70 -70
  51. data/unittests/html/complex_table.html +36 -36
  52. data/unittests/html/cssTest.html +42 -42
  53. data/unittests/html/div.html +72 -72
  54. data/unittests/html/div_xml.html +20 -20
  55. data/unittests/html/fileupload.html +45 -45
  56. data/unittests/html/formTest1.html +38 -38
  57. data/unittests/html/forms2.html +45 -45
  58. data/unittests/html/forms3.html +132 -132
  59. data/unittests/html/forms4.html +27 -27
  60. data/unittests/html/frame_buttons.html +3 -3
  61. data/unittests/html/frame_links.html +3 -3
  62. data/unittests/html/frame_multi.html +4 -4
  63. data/unittests/html/iframeTest.html +14 -14
  64. data/unittests/html/iframeTest1.html +13 -13
  65. data/unittests/html/iframeTest2.html +5 -5
  66. data/unittests/html/images1.html +66 -66
  67. data/unittests/html/javascriptevents.html +35 -35
  68. data/unittests/html/link_pass.html +10 -10
  69. data/unittests/html/links1.html +42 -42
  70. data/unittests/html/links2.html +10 -10
  71. data/unittests/html/modal_dialog.html +8 -8
  72. data/unittests/html/modal_dialog_launcher.html +11 -11
  73. data/unittests/html/nestedFrames.html +6 -6
  74. data/unittests/html/new_browser.html +17 -17
  75. data/unittests/html/new_browser_popup.html +7 -7
  76. data/unittests/html/pass.html +9 -9
  77. data/unittests/html/popups1.html +60 -60
  78. data/unittests/html/pre.html +27 -27
  79. data/unittests/html/radioButtons1.html +70 -70
  80. data/unittests/html/redirect.html +10 -10
  81. data/unittests/html/redirect1.html +8 -8
  82. data/unittests/html/redirect2.html +8 -8
  83. data/unittests/html/redirect3.html +8 -8
  84. data/unittests/html/select_tealeaf.html +54 -54
  85. data/unittests/html/selectboxes1.html +55 -55
  86. data/unittests/html/simple_table.html +26 -26
  87. data/unittests/html/simple_table_buttons.html +104 -104
  88. data/unittests/html/simple_table_columns.html +74 -74
  89. data/unittests/html/table1.html +165 -165
  90. data/unittests/html/tableCell_using_xpath.html +19 -19
  91. data/unittests/html/textarea.html +30 -30
  92. data/unittests/html/textfields1.html +62 -62
  93. data/unittests/html/textsearch.html +44 -44
  94. data/unittests/images_test.rb +198 -198
  95. data/unittests/images_xpath_test.rb +118 -118
  96. data/unittests/javascript_test.rb +75 -75
  97. data/unittests/links_test.rb +231 -231
  98. data/unittests/links_xpath_test.rb +79 -79
  99. data/unittests/mozilla_all_tests.rb +7 -7
  100. data/unittests/pre_test.rb +75 -75
  101. data/unittests/radios_test.rb +166 -166
  102. data/unittests/radios_xpath_test.rb +101 -101
  103. data/unittests/redirect_test.rb +41 -41
  104. data/unittests/selectbox_test.rb +142 -142
  105. data/unittests/selectbox_xpath_test.rb +129 -129
  106. data/unittests/setup.rb +29 -29
  107. data/unittests/table_test.rb +385 -385
  108. data/unittests/table_xpath_test.rb +185 -185
  109. data/unittests/textfields_test.rb +234 -234
  110. data/unittests/textfields_xpath_test.rb +113 -113
  111. metadata +51 -19
  112. data/lib/firewatir/version.rb +0 -5
@@ -1,239 +1,239 @@
1
- module FireWatir
2
- #
3
- # Description:
4
- # Class for returning the document element.
5
- #
6
- class Document
7
- include FireWatir::Container
8
- @@current_level = 0
9
-
10
- #
11
- # Description:
12
- # Creates new instance of Document class.
13
- #
14
- def initialize(container)
15
- @length = 0
16
- @elements = nil
17
- @arr_elements = ""
18
- @container = container
19
- end
20
-
21
- def frames
22
- jssh_command = "var frameset = #{@container.window_var}.frames;
23
- var elements_frames = new Array();
24
- for(var i = 0; i < frameset.length; i++)
25
- {
26
- var frames = frameset[i].frames;
27
- for(var j = 0; j < frames.length; j++)
28
- {
29
- elements_frames.push(frames[j].frameElement);
30
- }
31
- }
32
- elements_frames.length;"
33
-
34
- jssh_command.gsub!("\n", "")
35
- $jssh_socket.send("#{jssh_command};\n", 0)
36
- length = read_socket().to_i
37
-
38
- frame_array = Array.new(length)
39
- for i in 0..length - 1 do
40
- frame_array[i] = Frame.new(self, :jssh_name, "elements_frames[#{i}]")
41
- end
42
- frame_array
43
- end
44
-
45
- #
46
- # Description:
47
- # Find all the elements in the document by querying DOM.
48
- # Set the class variables like length and the variable name of array storing the elements in JSSH.
49
- #
50
- # Output:
51
- # Array of elements.
52
- #
53
- def all
54
- @arr_elements = "arr_coll_#{@@current_level}"
55
- jssh_command = "var arr_coll_#{@@current_level}=new Array(); "
56
-
57
- if(@container.class == FireWatir::Firefox || @container.class == Frame)
58
- jssh_command <<"var element_collection = null; element_collection = #{@container.document_var}.getElementsByTagName(\"*\");
59
- if(element_collection != null && typeof(element_collection) != 'undefined')
60
- {
61
- for (var i = 0; i < element_collection.length; i++)
62
- {
63
- if((element_collection[i].tagName != 'BR') && (element_collection[i].tagName != 'HR') && (element_collection[i].tagName != 'DOCTYPE') && (element_collection[i].tagName != 'META') && (typeof(element_collection[i].tagName) != 'undefined'))
64
- arr_coll_#{@@current_level}.push(element_collection[i]);
65
- }
66
- }
67
- arr_coll_#{@@current_level}.length;"
68
- else
69
- jssh_command <<"var element_collection = null; element_collection = #{@container.element_name}.getElementsByTagName(\"*\");
70
- if(element_collection!= null && typeof(element_collection) != 'undefined')
71
- {
72
- for (var i = 0; i < element_collection.length; i++)
73
- {
74
- if((element_collection[i].tagName != 'BR') && (element_collection[i].tagName != 'HR') && (element_collection[i].tagName != 'DOCTYPE') && (element_collection[i].tagName != 'META') && (typeof(element_collection[i].tagName) != 'undefined'))
75
- arr_coll_#{@@current_level}.push(element_collection[i]);
76
- }
77
- }
78
- arr_coll_#{@@current_level}.length;"
79
- end
80
-
81
- # Remove \n that are there in the string as a result of pressing enter while formatting.
82
- jssh_command.gsub!(/\n/, "")
83
- #puts jssh_command
84
- jssh_socket.send("#{jssh_command};\n", 0)
85
- @length = read_socket().to_i;
86
- #puts "elements length is in locate_tagged_elements is : #{@length}"
87
-
88
- elements = nil
89
- elements = Array.new(@length)
90
- for i in 0..@length - 1 do
91
- temp = Element.new("arr_coll_#{@@current_level}[#{i}]", @container)
92
- elements[i] = temp
93
- end
94
- @@current_level += 1
95
- return elements
96
-
97
- end
98
-
99
- #
100
- # Description:
101
- # Returns the count of elements in the document.
102
- #
103
- # Output:
104
- # Count of elements found in the document.
105
- #
106
- def length
107
- return @length
108
- end
109
- alias_method :size, :length
110
-
111
- #
112
- # Description:
113
- # Iterates over elements in the document.
114
- #
115
- def each
116
- for i in 0..@length - 1
117
- yield Element.new("#{@arr_elements}[#{i}]", @container)
118
- end
119
- end
120
-
121
- #
122
- # Description:
123
- # Gets the element at the nth index in the array of the elements.
124
- #
125
- # Input:
126
- # n - Index of element you want to access. Index is 1 based.
127
- #
128
- # Output:
129
- # Element at the nth index.
130
- #
131
- def [](n)
132
- return Element.new("#{@arr_elements}[#{n-1}]", @container)
133
- end
134
-
135
- #
136
- # Description:
137
- # Get all forms available on the page.
138
- # Used internally by Firewatir use ff.show_forms instead.
139
- #
140
- # Output:
141
- # Array containing Form elements
142
- #
143
- def get_forms()
144
- jssh_socket.send("var element_forms = #{@container.document_var}.forms; element_forms.length;\n", 0)
145
- length = read_socket().to_i
146
- forms = Array.new(length)
147
-
148
- for i in 0..length - 1 do
149
- forms[i] = Form.new(@container, :jssh_name, "element_forms[#{i}]")
150
- end
151
- return forms
152
- end
153
-
154
- #
155
- # Description:
156
- # Get all images available on the page.
157
- # Used internally by Firewatir use ff.show_images instead.
158
- #
159
- # Output:
160
- # Array containing Image elements
161
- #
162
- def get_images
163
- return Images.new(@container)
164
- end
165
-
166
- #
167
- # Description:
168
- # Get all links available on the page.
169
- # Used internally by Firewatir use ff.show_links instead.
170
- #
171
- # Output:
172
- # Array containing Link elements
173
- #
174
- def get_links
175
- return Links.new(@container)
176
- end
177
-
178
- #
179
- # Description:
180
- # Get all divs available on the page.
181
- # Used internally by Firewatir use ff.show_divs instead.
182
- #
183
- # Output:
184
- # Array containing Div elements
185
- #
186
- def get_divs
187
- return Divs.new(@container)
188
- end
189
-
190
- #
191
- # Description:
192
- # Get all tables available on the page.
193
- # Used internally by Firewatir use ff.show_tables instead.
194
- #
195
- # Output:
196
- # Array containing Table elements
197
- #
198
- def get_tables
199
- return Tables.new(@container)
200
- end
201
-
202
- #
203
- # Description:
204
- # Get all pres available on the page.
205
- # Used internally by Firewatir use ff.show_pres instead.
206
- #
207
- # Output:
208
- # Array containing Pre elements
209
- #
210
- def get_pres
211
- return Pres.new(@container)
212
- end
213
-
214
- #
215
- # Description:
216
- # Get all spans available on the page.
217
- # Used internally by Firewatir use ff.show_spans instead.
218
- #
219
- # Output:
220
- # Array containing Span elements
221
- #
222
- def get_spans
223
- return Spans.new(@container)
224
- end
225
-
226
- #
227
- # Description:
228
- # Get all labels available on the page.
229
- # Used internally by Firewatir use ff.show_labels instead.
230
- #
231
- # Output:
232
- # Array containing Label elements
233
- #
234
- def get_labels
235
- return Labels.new(@container)
236
- end
237
-
238
- end # Docuemnt
239
- end # FireWatir
1
+ module FireWatir
2
+ #
3
+ # Description:
4
+ # Class for returning the document element.
5
+ #
6
+ class Document
7
+ include FireWatir::Container
8
+ @@current_level = 0
9
+
10
+ #
11
+ # Description:
12
+ # Creates new instance of Document class.
13
+ #
14
+ def initialize(container)
15
+ @length = 0
16
+ @elements = nil
17
+ @arr_elements = ""
18
+ @container = container
19
+ end
20
+
21
+ def frames
22
+ jssh_command = "var frameset = #{@container.window_var}.frames;
23
+ var elements_frames = new Array();
24
+ for(var i = 0; i < frameset.length; i++)
25
+ {
26
+ var frames = frameset[i].frames;
27
+ for(var j = 0; j < frames.length; j++)
28
+ {
29
+ elements_frames.push(frames[j].frameElement);
30
+ }
31
+ }
32
+ elements_frames.length;"
33
+
34
+ jssh_command.gsub!("\n", "")
35
+ $jssh_socket.send("#{jssh_command};\n", 0)
36
+ length = read_socket().to_i
37
+
38
+ frame_array = Array.new(length)
39
+ for i in 0..length - 1 do
40
+ frame_array[i] = Frame.new(self, :jssh_name, "elements_frames[#{i}]")
41
+ end
42
+ frame_array
43
+ end
44
+
45
+ #
46
+ # Description:
47
+ # Find all the elements in the document by querying DOM.
48
+ # Set the class variables like length and the variable name of array storing the elements in JSSH.
49
+ #
50
+ # Output:
51
+ # Array of elements.
52
+ #
53
+ def all
54
+ @arr_elements = "arr_coll_#{@@current_level}"
55
+ jssh_command = "var arr_coll_#{@@current_level}=new Array(); "
56
+
57
+ if(@container.class == FireWatir::Firefox || @container.class == Frame)
58
+ jssh_command <<"var element_collection = null; element_collection = #{@container.document_var}.getElementsByTagName(\"*\");
59
+ if(element_collection != null && typeof(element_collection) != 'undefined')
60
+ {
61
+ for (var i = 0; i < element_collection.length; i++)
62
+ {
63
+ if((element_collection[i].tagName != 'BR') && (element_collection[i].tagName != 'HR') && (element_collection[i].tagName != 'DOCTYPE') && (element_collection[i].tagName != 'META') && (typeof(element_collection[i].tagName) != 'undefined'))
64
+ arr_coll_#{@@current_level}.push(element_collection[i]);
65
+ }
66
+ }
67
+ arr_coll_#{@@current_level}.length;"
68
+ else
69
+ jssh_command <<"var element_collection = null; element_collection = #{@container.element_name}.getElementsByTagName(\"*\");
70
+ if(element_collection!= null && typeof(element_collection) != 'undefined')
71
+ {
72
+ for (var i = 0; i < element_collection.length; i++)
73
+ {
74
+ if((element_collection[i].tagName != 'BR') && (element_collection[i].tagName != 'HR') && (element_collection[i].tagName != 'DOCTYPE') && (element_collection[i].tagName != 'META') && (typeof(element_collection[i].tagName) != 'undefined'))
75
+ arr_coll_#{@@current_level}.push(element_collection[i]);
76
+ }
77
+ }
78
+ arr_coll_#{@@current_level}.length;"
79
+ end
80
+
81
+ # Remove \n that are there in the string as a result of pressing enter while formatting.
82
+ jssh_command.gsub!(/\n/, "")
83
+ #puts jssh_command
84
+ jssh_socket.send("#{jssh_command};\n", 0)
85
+ @length = read_socket().to_i;
86
+ #puts "elements length is in locate_tagged_elements is : #{@length}"
87
+
88
+ elements = nil
89
+ elements = Array.new(@length)
90
+ for i in 0..@length - 1 do
91
+ temp = Element.new("arr_coll_#{@@current_level}[#{i}]", @container)
92
+ elements[i] = temp
93
+ end
94
+ @@current_level += 1
95
+ return elements
96
+
97
+ end
98
+
99
+ #
100
+ # Description:
101
+ # Returns the count of elements in the document.
102
+ #
103
+ # Output:
104
+ # Count of elements found in the document.
105
+ #
106
+ def length
107
+ return @length
108
+ end
109
+ alias_method :size, :length
110
+
111
+ #
112
+ # Description:
113
+ # Iterates over elements in the document.
114
+ #
115
+ def each
116
+ for i in 0..@length - 1
117
+ yield Element.new("#{@arr_elements}[#{i}]", @container)
118
+ end
119
+ end
120
+
121
+ #
122
+ # Description:
123
+ # Gets the element at the nth index in the array of the elements.
124
+ #
125
+ # Input:
126
+ # n - Index of element you want to access. Index is 1 based.
127
+ #
128
+ # Output:
129
+ # Element at the nth index.
130
+ #
131
+ def [](n)
132
+ return Element.new("#{@arr_elements}[#{n-1}]", @container)
133
+ end
134
+
135
+ #
136
+ # Description:
137
+ # Get all forms available on the page.
138
+ # Used internally by Firewatir use ff.show_forms instead.
139
+ #
140
+ # Output:
141
+ # Array containing Form elements
142
+ #
143
+ def get_forms()
144
+ jssh_socket.send("var element_forms = #{@container.document_var}.forms; element_forms.length;\n", 0)
145
+ length = read_socket().to_i
146
+ forms = Array.new(length)
147
+
148
+ for i in 0..length - 1 do
149
+ forms[i] = Form.new(@container, :jssh_name, "element_forms[#{i}]")
150
+ end
151
+ return forms
152
+ end
153
+
154
+ #
155
+ # Description:
156
+ # Get all images available on the page.
157
+ # Used internally by Firewatir use ff.show_images instead.
158
+ #
159
+ # Output:
160
+ # Array containing Image elements
161
+ #
162
+ def get_images
163
+ return Images.new(@container)
164
+ end
165
+
166
+ #
167
+ # Description:
168
+ # Get all links available on the page.
169
+ # Used internally by Firewatir use ff.show_links instead.
170
+ #
171
+ # Output:
172
+ # Array containing Link elements
173
+ #
174
+ def get_links
175
+ return Links.new(@container)
176
+ end
177
+
178
+ #
179
+ # Description:
180
+ # Get all divs available on the page.
181
+ # Used internally by Firewatir use ff.show_divs instead.
182
+ #
183
+ # Output:
184
+ # Array containing Div elements
185
+ #
186
+ def get_divs
187
+ return Divs.new(@container)
188
+ end
189
+
190
+ #
191
+ # Description:
192
+ # Get all tables available on the page.
193
+ # Used internally by Firewatir use ff.show_tables instead.
194
+ #
195
+ # Output:
196
+ # Array containing Table elements
197
+ #
198
+ def get_tables
199
+ return Tables.new(@container)
200
+ end
201
+
202
+ #
203
+ # Description:
204
+ # Get all pres available on the page.
205
+ # Used internally by Firewatir use ff.show_pres instead.
206
+ #
207
+ # Output:
208
+ # Array containing Pre elements
209
+ #
210
+ def get_pres
211
+ return Pres.new(@container)
212
+ end
213
+
214
+ #
215
+ # Description:
216
+ # Get all spans available on the page.
217
+ # Used internally by Firewatir use ff.show_spans instead.
218
+ #
219
+ # Output:
220
+ # Array containing Span elements
221
+ #
222
+ def get_spans
223
+ return Spans.new(@container)
224
+ end
225
+
226
+ #
227
+ # Description:
228
+ # Get all labels available on the page.
229
+ # Used internally by Firewatir use ff.show_labels instead.
230
+ #
231
+ # Output:
232
+ # Array containing Label elements
233
+ #
234
+ def get_labels
235
+ return Labels.new(@container)
236
+ end
237
+
238
+ end # Docuemnt
239
+ end # FireWatir