firewatir 1.1.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.
- 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
|