firewatir 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/MozillaBaseElement.rb +1778 -0
- data/container.rb +889 -0
- data/firewatir/exceptions.rb +44 -0
- data/firewatir/testUnitAddons.rb +8 -0
- data/firewatir.rb +1130 -0
- data/htmlelements.rb +2277 -0
- data/unittests/attach_to_new_window_test.rb +34 -0
- data/unittests/bug_fixes_test.rb +188 -0
- data/unittests/buttons_test.rb +215 -0
- data/unittests/buttons_xpath_test.rb +87 -0
- data/unittests/checkbox_test.rb +154 -0
- data/unittests/checkbox_xpath_test.rb +107 -0
- data/unittests/div_test.rb +274 -0
- data/unittests/filefield_test.rb +45 -0
- data/unittests/filefield_xpath_test.rb +35 -0
- data/unittests/form_test.rb +307 -0
- data/unittests/frame_test.rb +151 -0
- data/unittests/hidden_test.rb +85 -0
- data/unittests/hidden_xpath_test.rb +72 -0
- data/unittests/html/JavascriptClick.html +42 -0
- data/unittests/html/blankpage.html +12 -0
- data/unittests/html/buttons1.html +61 -0
- data/unittests/html/checkboxes1.html +71 -0
- data/unittests/html/complex_table.html +36 -0
- data/unittests/html/cssTest.html +42 -0
- data/unittests/html/div.html +72 -0
- data/unittests/html/div_xml.html +21 -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 +15 -0
- data/unittests/html/iframeTest1.html +14 -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 +67 -0
- data/unittests/html/javascriptevents.html +35 -0
- data/unittests/html/link_pass.html +11 -0
- data/unittests/html/links1.html +42 -0
- data/unittests/html/links2.html +11 -0
- data/unittests/html/modal_dialog.html +8 -0
- data/unittests/html/modal_dialog_launcher.html +12 -0
- data/unittests/html/nestedFrames.html +6 -0
- data/unittests/html/new_browser.html +17 -0
- data/unittests/html/pass.html +10 -0
- data/unittests/html/popups1.html +60 -0
- data/unittests/html/pre.html +28 -0
- data/unittests/html/radioButtons1.html +71 -0
- data/unittests/html/redirect.html +10 -0
- data/unittests/html/redirect1.html +9 -0
- data/unittests/html/redirect2.html +9 -0
- data/unittests/html/redirect3.html +9 -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 +74 -0
- data/unittests/html/table1.html +165 -0
- data/unittests/html/tableCell_using_xpath.html +19 -0
- data/unittests/html/textarea.html +30 -0
- data/unittests/html/textfields1.html +62 -0
- data/unittests/html/textsearch.html +44 -0
- data/unittests/images_test.rb +204 -0
- data/unittests/images_xpath_test.rb +118 -0
- data/unittests/iostring.rb +30 -0
- data/unittests/iostring_test.rb +48 -0
- data/unittests/javascript_test.rb +71 -0
- data/unittests/links_test.rb +230 -0
- data/unittests/links_xpath_test.rb +79 -0
- data/unittests/mozilla_all_tests.rb +18 -0
- data/unittests/pre_test.rb +74 -0
- data/unittests/radios_test.rb +166 -0
- data/unittests/radios_xpath_test.rb +101 -0
- data/unittests/redirect_test.rb +40 -0
- data/unittests/selectbox_test.rb +141 -0
- data/unittests/selectbox_xpath_test.rb +127 -0
- data/unittests/setup.rb +35 -0
- data/unittests/table_test.rb +372 -0
- data/unittests/table_xpath_test.rb +184 -0
- data/unittests/textfields_test.rb +230 -0
- data/unittests/textfields_xpath_test.rb +112 -0
- metadata +144 -0
@@ -0,0 +1,34 @@
|
|
1
|
+
# feature tests for attaching to new Firefox windows
|
2
|
+
# revision: $Revision: 1.0 $
|
3
|
+
|
4
|
+
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') if $0 == __FILE__
|
5
|
+
require 'unittests/setup'
|
6
|
+
|
7
|
+
class TC_NewWindow < Test::Unit::TestCase
|
8
|
+
include FireWatir
|
9
|
+
|
10
|
+
def setup
|
11
|
+
$ff.goto($htmlRoot + "new_browser.html")
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_simply_attach_to_new_window_using_title
|
15
|
+
$ff.link(:text, 'New Window').click
|
16
|
+
ff_new = $ff.attach(:title, 'Pass Page')
|
17
|
+
assert(ff_new.text.include?('PASS'))
|
18
|
+
ff_new.close
|
19
|
+
#$ff.link(:text, 'New Window').click
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_simply_attach_to_new_window_using_url
|
23
|
+
$ff.link(:text, 'New Window').click
|
24
|
+
ff_new = $ff.attach(:url, /pass\.html/)
|
25
|
+
assert(ff_new.text.include?('PASS'))
|
26
|
+
ff_new.close
|
27
|
+
#$ff.link(:text, 'New Window').click
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_new_window_exists
|
31
|
+
assert_raises(NoMatchingWindowFoundException , "NoMatchingWindowFoundException was supposed to be thrown" ) { $ff.attach(:title, "missing_title") }
|
32
|
+
assert_raises(NoMatchingWindowFoundException , "NoMatchingWindowFoundException was supposed to be thrown" ) { $ff.attach(:url, "missing_url") }
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,188 @@
|
|
1
|
+
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') if $0 == __FILE__
|
2
|
+
require 'unittests/setup'
|
3
|
+
|
4
|
+
class TC_Bugs< Test::Unit::TestCase
|
5
|
+
include FireWatir
|
6
|
+
|
7
|
+
def setup
|
8
|
+
$ff.goto($htmlRoot + "frame_buttons.html")
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_frame_objects_bug3
|
12
|
+
frame = $ff.frame("buttonFrame")
|
13
|
+
button = frame.button(:name, "b1")
|
14
|
+
assert_equal("buttonFrame", frame.name)
|
15
|
+
assert_equal("b2", button.id)
|
16
|
+
text1 = frame.text_field(:id, "text_id")
|
17
|
+
text1.set("NewValue")
|
18
|
+
assert("NewValue",frame.text_field(:id, "text_id").value)
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_link_object_bug9
|
22
|
+
$ff.goto($htmlRoot + "links1.html")
|
23
|
+
link = $ff.link(:text, "nameDelet")
|
24
|
+
assert_equal("test_link", link.name)
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
# element_by_xpath should return an element that's instance of the
|
29
|
+
# appropriate class, not the generic Element class. So if it's a div,
|
30
|
+
# it should return an instance of Div, if it's a checkbox, CheckBox,
|
31
|
+
# and so on. TODO write tests for all classes
|
32
|
+
def test_element_by_xpath_bug01
|
33
|
+
$ff.goto($htmlRoot + "div.html")
|
34
|
+
element = $ff.element_by_xpath("//div[@id='div1']")
|
35
|
+
assert_not_nil(element) # helder
|
36
|
+
# next assert always breaks, dunno why (error, not failure)
|
37
|
+
#assert_instance_of(Div, element, "wrong constructor was used")
|
38
|
+
# using this hack instead
|
39
|
+
assert(element.instance_of?(Div),
|
40
|
+
"element class should be: #{Div}; got: #{element.class}.")
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_elements_by_xpath_bug10
|
44
|
+
$ff.goto($htmlRoot + "links1.html")
|
45
|
+
elements = $ff.elements_by_xpath("//a")
|
46
|
+
assert_equal(11, elements.length)
|
47
|
+
assert_equal("links2.html", elements[0].href)
|
48
|
+
assert_equal("link_class_1", elements[1].className)
|
49
|
+
assert_equal("link_id", elements[5].id)
|
50
|
+
assert_equal("Link Using an ID", elements[5].text)
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_button_by_value_bug8
|
54
|
+
$ff.goto($htmlRoot + "buttons1.html")
|
55
|
+
assert_equal("Sign In", $ff.button(:value,"Sign In").value)
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_html_bug7
|
59
|
+
$ff.goto($htmlRoot + "links1.html")
|
60
|
+
html = $ff.html
|
61
|
+
assert_match(/.*<a id="linktos" *>*/,html)
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_span_onclick_bug14
|
65
|
+
$ff.goto($htmlRoot + "div.html")
|
66
|
+
$ff.span(:id, "span1").fireEvent("onclick")
|
67
|
+
assert($ff.text.include?("PASS") )
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_file_field_value_bug20
|
71
|
+
actual_file_name = "c:\\Program Files\\TestFile.html"
|
72
|
+
$ff.goto($htmlRoot + "fileupload.html")
|
73
|
+
$ff.file_field(:name, "file3").set(actual_file_name)
|
74
|
+
set_file_name = $ff.file_field(:name, "file3").value
|
75
|
+
# make sure correct value for upload file is posted.
|
76
|
+
assert(actual_file_name, set_file_name)
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_attribute_value_bug22
|
80
|
+
$ff.goto($htmlRoot + "div.html")
|
81
|
+
assert("Test1", $ff.element_by_xpath("//div[@id='div1']").attribute_value("title"))
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_url_value_bug23
|
85
|
+
$ff.goto($htmlRoot + "buttons1.html")
|
86
|
+
$ff.button(:id, "b2").click
|
87
|
+
assert($htmlRoot + "pass.html", $ff.url)
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_contains_text_bug28
|
91
|
+
$ff.goto($htmlRoot + "buttons1.html")
|
92
|
+
$ff.button(:id, "b2").click
|
93
|
+
assert_false($ff.contains_text("passed"))
|
94
|
+
assert($ff.contains_text("PASS"))
|
95
|
+
assert($ff.contains_text("PAS"))
|
96
|
+
assert($ff.contains_text(/PAS/))
|
97
|
+
assert($ff.contains_text(/pass/i))
|
98
|
+
assert_false($ff.contains_text(/pass/))
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_frame_bug_21
|
102
|
+
$ff.goto($htmlRoot + "frame_buttons.html")
|
103
|
+
frame1 = $ff.frame(:name, "buttonFrame")
|
104
|
+
frame2 = $ff.frame(:name, "buttonFrame2")
|
105
|
+
assert_equal("buttons1.html", frame1.src)
|
106
|
+
assert_equal("blankpage.html", frame2.src)
|
107
|
+
end
|
108
|
+
|
109
|
+
def test_quotes_bug_11
|
110
|
+
$ff.goto($htmlRoot + "textfields1.html")
|
111
|
+
$ff.text_field(:name, "text1").set("value with quote (\")")
|
112
|
+
assert_equal("value with quote (\")", $ff.text_field(:name, "text1").value)
|
113
|
+
$ff.text_field(:name, "text1").set("value with backslash (\\)")
|
114
|
+
assert_equal("value with backslash (\\)", $ff.text_field(:name, "text1").value)
|
115
|
+
end
|
116
|
+
|
117
|
+
def test_close_bug_26
|
118
|
+
if ! (RUBY_PLATFORM =~ /darwin/i)
|
119
|
+
$ff.close()
|
120
|
+
$ff = Firefox.new
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
def test_class_bug_29
|
125
|
+
$ff.goto($htmlRoot + "div.html")
|
126
|
+
div = $ff.div(:class, "blueText")
|
127
|
+
assert_equal("div2", div.id)
|
128
|
+
end
|
129
|
+
|
130
|
+
def test_element_using_any_attribute
|
131
|
+
$ff.goto($htmlRoot + "div.html")
|
132
|
+
div = $ff.div(:title, "Test1")
|
133
|
+
assert_equal("div1", div.id)
|
134
|
+
end
|
135
|
+
|
136
|
+
def test_element_using_any_attribute2
|
137
|
+
$ff.goto($htmlRoot + "div.html")
|
138
|
+
div = $ff.div(:attribute, "attribute")
|
139
|
+
assert_equal("div1", div.id)
|
140
|
+
end
|
141
|
+
|
142
|
+
def test_file_field_bug_20
|
143
|
+
$ff.goto($htmlRoot + "fileupload.html")
|
144
|
+
# Enter dummy path.
|
145
|
+
if(RUBY_PLATFORM =~ /.*mswin.*/)
|
146
|
+
$ff.file_field(:name, "file3").set("c:\\results.txt")
|
147
|
+
else
|
148
|
+
$ff.file_field(:name, "file3").set("/user/lib/results.txt")
|
149
|
+
end
|
150
|
+
$ff.button(:name, "upload").click()
|
151
|
+
url = $ff.url
|
152
|
+
assert_match(/.*results.txt&upload=upload$/,url)
|
153
|
+
end
|
154
|
+
|
155
|
+
def test_button_bug2
|
156
|
+
$ff.goto($htmlRoot + "buttons1.html")
|
157
|
+
btn = $ff.button(:id, "b7")
|
158
|
+
assert_equal("b7", btn.id)
|
159
|
+
end
|
160
|
+
|
161
|
+
def test_getAllContents_bug25
|
162
|
+
$ff.goto($htmlRoot + "select_tealeaf.html")
|
163
|
+
$ff.select_lists.each do |select|
|
164
|
+
contents = select.getAllContents().to_s
|
165
|
+
puts contents
|
166
|
+
assert_equal("=<>>=<=", contents)
|
167
|
+
break
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
def test_fire_event_bug31
|
172
|
+
$ff.goto($htmlRoot + "div.html")
|
173
|
+
div = $ff.div(:attribute, "attribute")
|
174
|
+
div.fire_event("ondblclick")
|
175
|
+
assert("PASS", $ff.text)
|
176
|
+
$ff.goto($htmlRoot + "div.html")
|
177
|
+
div = $ff.div(:id, "div1")
|
178
|
+
div.fireEvent("ondblclick")
|
179
|
+
assert("PASS", $ff.text)
|
180
|
+
end
|
181
|
+
|
182
|
+
def test_contains_text_bug37
|
183
|
+
$ff.goto($htmlRoot + "frame_buttons.html")
|
184
|
+
frame = $ff.frame(:name, "buttonFrame")
|
185
|
+
assert(frame.contains_text("second button"))
|
186
|
+
assert_false(frame.contains_text("second button second"))
|
187
|
+
end
|
188
|
+
end
|
@@ -0,0 +1,215 @@
|
|
1
|
+
# feature tests for Buttons of type <input type = "button">
|
2
|
+
# revision: $Revision: 1.0 $
|
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 FireWatir
|
9
|
+
|
10
|
+
def setup
|
11
|
+
$ff.goto($htmlRoot + "buttons1.html")
|
12
|
+
end
|
13
|
+
|
14
|
+
def goto_frames_page()
|
15
|
+
$ff.goto($htmlRoot + "frame_buttons.html")
|
16
|
+
end
|
17
|
+
|
18
|
+
#def test_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 test_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, $ff.button(:name, "b4").to_s)
|
45
|
+
assert_equal(b1, $ff.button(:caption, "Click Me").to_s)
|
46
|
+
assert_equal(b1, $ff.button(:index, 1).to_s)
|
47
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ff.button(:name, "noName").to_s }
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_properties
|
51
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ff.button(:name, "noName").id }
|
52
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ff.button(:name, "noName").name }
|
53
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ff.button(:name, "noName").disabled }
|
54
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ff.button(:name, "noName").type }
|
55
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ff.button(:name, "noName").value }
|
56
|
+
|
57
|
+
assert_equal("b1" , $ff.button(:index, 1).name )
|
58
|
+
assert_equal("b2" , $ff.button(:index, 1).id )
|
59
|
+
assert_equal("button" , $ff.button(:index, 1).type )
|
60
|
+
assert_equal("Click Me" , $ff.button(:index, 1).value )
|
61
|
+
assert_equal(false , $ff.button(:index, 1).disabled )
|
62
|
+
assert_equal("italic_button" , $ff.button(:name, "b1").class_name )
|
63
|
+
assert_equal("" , $ff.button(:name , "b4").class_name )
|
64
|
+
|
65
|
+
|
66
|
+
assert_equal("b1" , $ff.button(:id, "b2").name )
|
67
|
+
assert_equal("b2" , $ff.button(:id, "b2").id )
|
68
|
+
assert_equal("button" , $ff.button(:id, "b2").type )
|
69
|
+
|
70
|
+
assert_equal("b4" , $ff.button(:index, 2).name )
|
71
|
+
assert_equal("b5" , $ff.button(:index, 2).id )
|
72
|
+
assert_equal("button" , $ff.button(:index, 2).type )
|
73
|
+
assert_equal("Disabled Button" , $ff.button(:index, 2).value )
|
74
|
+
assert_equal(true , $ff.button(:index, 2).disabled )
|
75
|
+
|
76
|
+
assert_equal( "" , $ff.button(:index, 2).title )
|
77
|
+
assert_equal( "this is button1" , $ff.button(:index, 1).title )
|
78
|
+
end
|
79
|
+
|
80
|
+
|
81
|
+
def test_button_using_default
|
82
|
+
# since most of the time, a button will be accessed based on its caption, there is a default way of accessing it....
|
83
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ff.button( "Missing Caption").click }
|
84
|
+
|
85
|
+
$ff.button("Click Me").click
|
86
|
+
assert($ff.text.include?("PASS") )
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_Button_click_only
|
90
|
+
$ff.button(:caption, "Click Me").click
|
91
|
+
assert($ff.text.include?("PASS") )
|
92
|
+
end
|
93
|
+
|
94
|
+
def test_button_click
|
95
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ff.button(:caption, "Missing Caption").click }
|
96
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ff.button(:id, "missingID").click }
|
97
|
+
|
98
|
+
assert_raises(ObjectDisabledException , "ObjectDisabledException was supposed to be thrown" ) { $ff.button(:caption, "Disabled Button").click }
|
99
|
+
|
100
|
+
$ff.button(:caption, "Click Me").click
|
101
|
+
assert($ff.text.include?("PASS") )
|
102
|
+
end
|
103
|
+
|
104
|
+
def test_Button_Exists
|
105
|
+
assert($ff.button(:caption, "Click Me").exists?)
|
106
|
+
assert($ff.button(:caption, "Submit").exists?)
|
107
|
+
assert($ff.button(:name, "b1").exists?)
|
108
|
+
assert($ff.button(:id, "b2").exists?)
|
109
|
+
assert($ff.button(:caption, /sub/i).exists?)
|
110
|
+
|
111
|
+
assert_false($ff.button(:caption, "missingcaption").exists?)
|
112
|
+
assert_false($ff.button(:name, "missingname").exists?)
|
113
|
+
assert_false($ff.button(:id, "missingid").exists?)
|
114
|
+
assert_false($ff.button(:caption, /missing/i).exists?)
|
115
|
+
end
|
116
|
+
|
117
|
+
def test_Button_Enabled
|
118
|
+
assert($ff.button(:caption, "Click Me").enabled?)
|
119
|
+
assert_false($ff.button(:caption, "Disabled Button").enabled?)
|
120
|
+
assert_false($ff.button(:name, "b4").enabled?)
|
121
|
+
assert_false($ff.button(:id, "b5").enabled?)
|
122
|
+
|
123
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ff.button(:name, "noName").enabled? }
|
124
|
+
end
|
125
|
+
|
126
|
+
def test_button2
|
127
|
+
assert($ff.button(:caption, "Click Me2").exists?, 'Can\'t find Button with caption "Click Me2"')
|
128
|
+
|
129
|
+
assert($ff.button(:caption, "Disabled Button2").exists?, 'Can\'t find Button with caption "Disabled Button2"')
|
130
|
+
assert($ff.button(:caption, "Sign In").exists?, 'Can\'t find Button with caption "Sign In"')
|
131
|
+
|
132
|
+
assert_equal("b6" , $ff.button(:id, "b7").name )
|
133
|
+
assert_equal("b7" , $ff.button(:name, "b6").id )
|
134
|
+
assert_equal("Click Me2" , $ff.button(:id, "b7").value )
|
135
|
+
assert_equal(false , $ff.button(:id, "b7").disabled )
|
136
|
+
assert_equal("italic_button" , $ff.button(:name, "b6").class_name )
|
137
|
+
|
138
|
+
assert_equal("b8" , $ff.button(:id, "b9").name )
|
139
|
+
assert_equal("b9" , $ff.button(:name, "b8").id )
|
140
|
+
assert_equal("Disabled Button2" , $ff.button(:id, "b9").value )
|
141
|
+
assert_equal(false , $ff.button(:id, "b9").enabled?)
|
142
|
+
assert_equal("" , $ff.button(:name, "b8").class_name )
|
143
|
+
assert_equal("Sign In", $ff.button(:caption, "Sign In").value)
|
144
|
+
|
145
|
+
assert($ff.button(:caption, "Click Me").enabled?, 'Button wih caption "Click Me" should be enabled')
|
146
|
+
|
147
|
+
assert_false($ff.button(:caption, "Disabled Button2").enabled?, 'Button wih caption "Disabled Button2" should be disabled')
|
148
|
+
|
149
|
+
|
150
|
+
assert_raises(ObjectDisabledException , "ObjectDisabledException was supposed to be thrown" ) { $ff.button(:caption, "Disabled Button2").click }
|
151
|
+
|
152
|
+
$ff.button(:caption, "Click Me2").click
|
153
|
+
assert($ff.text.include?("PASS"), 'Clicking on "Click Me2" button should\'ve taken to the "PASS" page')
|
154
|
+
|
155
|
+
end
|
156
|
+
|
157
|
+
def test_frame
|
158
|
+
goto_frames_page()
|
159
|
+
f = $ff.frame("buttonFrame")
|
160
|
+
assert(f.button(:caption, "Click Me").enabled?)
|
161
|
+
#assert_raises( UnknownObjectException , "UnknownObjectException was supposed to be thrown ( no frame name supplied) " ) { $ff.button(:caption, "Disabled Button").enabled?}
|
162
|
+
end
|
163
|
+
|
164
|
+
def test_buttons
|
165
|
+
arrButtons = $ff.buttons
|
166
|
+
assert_equal(7, arrButtons.length)
|
167
|
+
#arrButtons.each do |button|
|
168
|
+
#puts button.to_s
|
169
|
+
#end
|
170
|
+
assert_equal("b2", arrButtons[1].id)
|
171
|
+
assert_equal("b5", arrButtons[2].id)
|
172
|
+
assert_equal("Submit", arrButtons[3].value)
|
173
|
+
assert_equal("sub3", arrButtons[4].name)
|
174
|
+
assert_equal("b7", arrButtons[5].id)
|
175
|
+
assert_equal("b9", arrButtons[6].id)
|
176
|
+
assert_equal("Sign In", arrButtons[7].value)
|
177
|
+
end
|
178
|
+
|
179
|
+
# Tests collection class
|
180
|
+
def test_class_buttons
|
181
|
+
arr_buttons = $ff.buttons
|
182
|
+
arr_buttons.each do |b|
|
183
|
+
assert(b.instance_of?(Button),"element class should be #{Button}; got #{b.class}")
|
184
|
+
end
|
185
|
+
# test properties
|
186
|
+
assert_equal("b2", arr_buttons[1].id)
|
187
|
+
assert_equal("b1", arr_buttons[1].name)
|
188
|
+
assert_equal("button", arr_buttons[1].type)
|
189
|
+
assert_equal("Click Me", arr_buttons[1].value)
|
190
|
+
assert_equal(false, arr_buttons[1].disabled)
|
191
|
+
assert_equal("italic_button", arr_buttons[1].class_name)
|
192
|
+
assert_equal( "this is button1", arr_buttons[1].title)
|
193
|
+
|
194
|
+
assert_equal("b5", arr_buttons[2].id)
|
195
|
+
assert_equal("b4", arr_buttons[2].name)
|
196
|
+
assert_equal("button", arr_buttons[2].type)
|
197
|
+
assert_equal("Disabled Button", arr_buttons[2].value)
|
198
|
+
assert_equal(true, arr_buttons[2].disabled)
|
199
|
+
assert_equal( "", arr_buttons[2].title)
|
200
|
+
assert_equal("", arr_buttons[2].class_name)
|
201
|
+
|
202
|
+
assert_equal("Submit", arr_buttons[3].value)
|
203
|
+
assert_equal("sub3", arr_buttons[4].name)
|
204
|
+
assert_equal("b7", arr_buttons[5].id)
|
205
|
+
assert_equal("b9", arr_buttons[6].id)
|
206
|
+
assert_equal("Sign In", arr_buttons[7].value)
|
207
|
+
|
208
|
+
|
209
|
+
|
210
|
+
|
211
|
+
end
|
212
|
+
|
213
|
+
|
214
|
+
end
|
215
|
+
|
@@ -0,0 +1,87 @@
|
|
1
|
+
# feature tests for Buttons
|
2
|
+
# revision: $Revision: 1.0 $
|
3
|
+
|
4
|
+
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') if $0 == __FILE__
|
5
|
+
require 'unittests/setup'
|
6
|
+
|
7
|
+
class TC_Buttons_XPath < Test::Unit::TestCase
|
8
|
+
include FireWatir
|
9
|
+
|
10
|
+
def setup
|
11
|
+
$ff.goto($htmlRoot + "buttons1.html")
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_properties
|
15
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ff.button(:xpath, "//input[@name='noName']").id }
|
16
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ff.button(:xpath, "//input[@name='noName']").name }
|
17
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ff.button(:xpath, "//input[@name='noName']").disabled }
|
18
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ff.button(:xpath, "//input[@name='noName']").type }
|
19
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ff.button(:xpath, "//input[@name='noName']").value }
|
20
|
+
|
21
|
+
assert_equal("b1" , $ff.button(:xpath, "//input[@id='b2']").name )
|
22
|
+
assert_equal("b2" , $ff.button(:xpath, "//input[@id='b2']").id )
|
23
|
+
assert_equal("button" , $ff.button(:xpath, "//input[@id='b2']").type )
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_button_using_default
|
27
|
+
# since most of the time, a button will be accessed based on its caption, there is a default way of accessing it....
|
28
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ff.button(:xpath, "//input[@value='Missing Caption']").click }
|
29
|
+
|
30
|
+
$ff.button(:xpath, "//input[@value='Click Me']").click
|
31
|
+
assert($ff.text.include?("PASS") )
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_Button_click_only
|
35
|
+
$ff.button(:xpath, "//input[@value='Click Me']").click
|
36
|
+
assert($ff.text.include?("PASS") )
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_button_click
|
40
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ff.button(:xpath, "//input[@value='Missing Caption']").click }
|
41
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ff.button(:xpath, "//input[@id='MissingId']").click }
|
42
|
+
|
43
|
+
assert_raises(ObjectDisabledException , "ObjectDisabledException was supposed to be thrown" ) { $ff.button(:xpath, "//input[@value='Disabled Button']").click }
|
44
|
+
|
45
|
+
$ff.button(:xpath, "//input[@value='Click Me']").click
|
46
|
+
assert($ff.text.include?("PASS") )
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_Button_Exists
|
50
|
+
assert($ff.button(:xpath, "//input[@value='Click Me']").exists?)
|
51
|
+
assert($ff.button(:xpath, "//input[@value='Submit']").exists?)
|
52
|
+
assert($ff.button(:xpath, "//input[@name='b1']").exists?)
|
53
|
+
assert($ff.button(:xpath, "//input[@id='b2']").exists?)
|
54
|
+
|
55
|
+
assert_false($ff.button(:xpath, "//input[@value='Missing Caption']").exists?)
|
56
|
+
assert_false($ff.button(:xpath, "//input[@name='missingname']").exists?)
|
57
|
+
assert_false($ff.button(:xpath, "//input[@id='missingid']").exists?)
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_element_by_xpath_class
|
61
|
+
element = $ff.element_by_xpath("//input[@value='Click Me']")
|
62
|
+
assert(element.instance_of?(Button),"element class should be #{Button}; got #{element.class}")
|
63
|
+
element = $ff.element_by_xpath("//input[@value='Submit']")
|
64
|
+
assert(element.instance_of?(Button),"element class should be #{Button}; got #{element.class}")
|
65
|
+
element = $ff.element_by_xpath("//input[@name='b1']")
|
66
|
+
assert(element.instance_of?(Button),"element class should be #{Button}; got #{element.class}")
|
67
|
+
element = $ff.element_by_xpath("//input[@id='b2']")
|
68
|
+
assert(element.instance_of?(Button),"element class should be #{Button}; got #{element.class}")
|
69
|
+
# TODO: If object is not there this should return null
|
70
|
+
#element = $ff.element_by_xpath("//input[@value='Missing Caption']")
|
71
|
+
#assert(element.instance_of?(Button),"element class should be #{Button}; got #{element.class}")
|
72
|
+
#element = $ff.element_by_xpath("//input[@name='missingname']")
|
73
|
+
#assert(element.instance_of?(Button),"element class should be #{Button}; got #{element.class}")
|
74
|
+
#element = $ff.element_by_xpath("//input[@id='missingid']")
|
75
|
+
#assert(element.instance_of?(Button),"element class should be #{Button}; got #{element.class}")
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_Button_Enabled
|
79
|
+
assert($ff.button(:xpath, "//input[@value='Click Me']").enabled?)
|
80
|
+
assert_false($ff.button(:xpath, "//input[@value='Disabled Button']").enabled?)
|
81
|
+
assert_false($ff.button(:xpath, "//input[@name='b4']").enabled?)
|
82
|
+
assert_false($ff.button(:xpath, "//input[@id='b5']").enabled?)
|
83
|
+
|
84
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ff.button(:xpath, "//input[@name='noName']").enabled? }
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
@@ -0,0 +1,154 @@
|
|
1
|
+
# feature tests for Check Boxes
|
2
|
+
# revision: $Revision: 1.0 $
|
3
|
+
|
4
|
+
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') if $0 == __FILE__
|
5
|
+
require 'unittests/setup'
|
6
|
+
|
7
|
+
class TC_CheckBox < Test::Unit::TestCase
|
8
|
+
include FireWatir
|
9
|
+
|
10
|
+
def setup()
|
11
|
+
$ff.goto($htmlRoot + "checkboxes1.html")
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_checkbox_properties
|
15
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ff.checkbox(:name, "noName").id }
|
16
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ff.checkbox(:name, "noName").name }
|
17
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ff.checkbox(:name, "noName").disabled }
|
18
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ff.checkbox(:name, "noName").type }
|
19
|
+
assert_raises(UnknownObjectException , "UnknownObjectException was supposed to be thrown" ) { $ff.checkbox(:name, "noName").value }
|
20
|
+
|
21
|
+
assert_equal("box1" , $ff.checkbox(:index, 1).name )
|
22
|
+
assert_instance_of(CheckBox,$ff.checkbox(:index,1))
|
23
|
+
assert_equal("" , $ff.checkbox(:index, 1).id )
|
24
|
+
assert_equal("checkbox" , $ff.checkbox(:index, 1).type )
|
25
|
+
assert_equal("on" , $ff.checkbox(:index, 1).value )
|
26
|
+
assert_equal(false , $ff.checkbox(:index, 1).disabled )
|
27
|
+
|
28
|
+
assert_equal("check_box_style" , $ff.checkbox(:name, "box1").class_name)
|
29
|
+
assert_equal("" , $ff.checkbox(:name, "box2").class_name)
|
30
|
+
|
31
|
+
assert_equal("1" , $ff.checkbox(:name,"box4").value )
|
32
|
+
assert_equal("3" , $ff.checkbox(:name,"box4" , 3).value )
|
33
|
+
assert_equal("checkbox" , $ff.checkbox(:name,"box4" , 3).type )
|
34
|
+
assert_equal(false , $ff.checkbox(:name,"box4" , 3).disabled )
|
35
|
+
assert_equal("" , $ff.checkbox(:name,"box4" , 3).id )
|
36
|
+
|
37
|
+
assert_equal("box4-value5" , $ff.checkbox(:name,"box4" , 5).title)
|
38
|
+
assert_equal("" , $ff.checkbox(:name,"box4" , 4).title)
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_onClick
|
42
|
+
assert_false($ff.button(:value , "foo").enabled?)
|
43
|
+
$ff.checkbox(:name, "box5").set
|
44
|
+
assert($ff.button(:value , "foo").enabled?)
|
45
|
+
|
46
|
+
$ff.checkbox(:name, "box5").clear
|
47
|
+
assert_false($ff.button(:value , "foo").enabled?)
|
48
|
+
|
49
|
+
$ff.checkbox(:name, "box5").clear
|
50
|
+
assert_false($ff.button(:value , "foo").enabled?)
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_CheckBox_Exists
|
54
|
+
assert($ff.checkbox(:name, "box1").exists?)
|
55
|
+
assert_false($ff.checkbox(:name, "missing").exists?)
|
56
|
+
|
57
|
+
assert($ff.checkbox(:name, "box4" , 1).exists?)
|
58
|
+
assert_false($ff.checkbox(:name, "box4" , 22).exists?)
|
59
|
+
end
|
60
|
+
|
61
|
+
#def test_checkbox_Enabled
|
62
|
+
# assert_raises(UnknownObjectException) { $ff.checkbox(:name, "noName").enabled? }
|
63
|
+
# assert_raises(UnknownObjectException) { $ff.checkbox(:id, "noName").enabled? }
|
64
|
+
# assert_raises(UnknownObjectException) { $ff.checkbox(:name, "box4" , 6).enabled? }
|
65
|
+
#
|
66
|
+
# assert($ff.checkbox(:name, "box1").enabled?)
|
67
|
+
# assert_false($ff.checkbox(:name, "box2").enabled?)
|
68
|
+
#
|
69
|
+
# assert($ff.checkbox(:name, "box4", 4).enabled?)
|
70
|
+
# assert_false($ff.checkbox(:name, "box4" , 5 ).enabled?)
|
71
|
+
#end
|
72
|
+
|
73
|
+
def test_checkbox_isSet
|
74
|
+
assert_raises(UnknownObjectException ) { $ff.checkbox(:name, "noName").isSet? }
|
75
|
+
|
76
|
+
assert_false($ff.checkbox(:name, "box1").isSet?)
|
77
|
+
assert_false($ff.checkbox(:name, "box2").isSet?)
|
78
|
+
assert($ff.checkbox(:name, "box3").isSet?)
|
79
|
+
|
80
|
+
assert_false($ff.checkbox(:name, "box4" , 2 ).isSet?)
|
81
|
+
assert($ff.checkbox(:name, "box4" , 1 ).isSet?)
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_checkbox_clear
|
85
|
+
assert_raises(UnknownObjectException) { $ff.checkbox(:name, "noName").clear }
|
86
|
+
$ff.checkbox(:name, "box1").clear
|
87
|
+
assert_false($ff.checkbox(:name, "box1").isSet?)
|
88
|
+
|
89
|
+
assert_raises(ObjectDisabledException) { $ff.checkbox(:name, "box2").clear }
|
90
|
+
assert_false($ff.checkbox(:name, "box2").isSet?)
|
91
|
+
|
92
|
+
$ff.checkbox(:name, "box3").clear
|
93
|
+
assert_false($ff.checkbox(:name, "box3").isSet?)
|
94
|
+
|
95
|
+
$ff.checkbox(:name, "box4" , 1).clear
|
96
|
+
assert_false($ff.checkbox(:name, "box4" , 1).isSet?)
|
97
|
+
end
|
98
|
+
|
99
|
+
def test_checkbox_getState
|
100
|
+
assert_raises(UnknownObjectException) { $ff.checkbox(:name, "noName").getState }
|
101
|
+
assert_equal( false , $ff.checkbox(:name, "box1").getState )
|
102
|
+
assert_equal( true , $ff.checkbox(:name, "box3").getState)
|
103
|
+
|
104
|
+
# checkboxes that have the same name but different values
|
105
|
+
assert_equal( false , $ff.checkbox(:name, "box4" , 2).getState )
|
106
|
+
assert_equal( true , $ff.checkbox(:name, "box4" , 1).getState)
|
107
|
+
end
|
108
|
+
|
109
|
+
def test_checkbox_set
|
110
|
+
assert_raises(UnknownObjectException) { $ff.checkbox(:name, "noName").set }
|
111
|
+
$ff.checkbox(:name, "box1").set
|
112
|
+
assert($ff.checkbox(:name, "box1").isSet?)
|
113
|
+
|
114
|
+
assert_raises(ObjectDisabledException) { $ff.checkbox(:name, "box2").set }
|
115
|
+
|
116
|
+
$ff.checkbox(:name, "box3").set
|
117
|
+
assert($ff.checkbox(:name, "box3").isSet?)
|
118
|
+
|
119
|
+
# checkboxes that have the same name but different values
|
120
|
+
$ff.checkbox(:name, "box4" , 3).set
|
121
|
+
assert($ff.checkbox(:name, "box4" , 3).isSet?)
|
122
|
+
|
123
|
+
# test set using the optinal true/false
|
124
|
+
# assumes the checkbox is already checked
|
125
|
+
$ff.checkbox(:name, "box1").set( false )
|
126
|
+
assert_false($ff.checkbox(:name, "box1").isSet?)
|
127
|
+
|
128
|
+
$ff.checkbox(:name, "box1").set( true )
|
129
|
+
assert($ff.checkbox(:name, "box1").isSet?)
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
|
134
|
+
end
|
135
|
+
|
136
|
+
def test_checkbox_iterator
|
137
|
+
|
138
|
+
assert_equal(11, $ff.checkboxes.length)
|
139
|
+
assert_equal("box1" , $ff.checkboxes[1].name )
|
140
|
+
|
141
|
+
index=1
|
142
|
+
$ff.checkboxes.each do |c|
|
143
|
+
assert_equal( $ff.checkbox(:index, index).name , c.name )
|
144
|
+
assert_equal( $ff.checkbox(:index, index).id, c.id )
|
145
|
+
assert_equal( $ff.checkbox(:index, index).value, c.value )
|
146
|
+
assert_equal( $ff.checkbox(:index, index).isSet?, c.isSet? )
|
147
|
+
index+=1
|
148
|
+
end
|
149
|
+
assert_equal(index-1, $ff.checkboxes.length)
|
150
|
+
|
151
|
+
end
|
152
|
+
|
153
|
+
|
154
|
+
end
|