sahi 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/lib/sahi.rb +50 -23
  2. data/test/sahi_test.rb +340 -313
  3. metadata +7 -4
@@ -4,24 +4,25 @@ require 'guid'
4
4
  require 'Platform'
5
5
 
6
6
  module Sahi
7
- # The Browser class controls different browser via Sahi's proxy.
7
+ # The Browser class controls different browsers via Sahi's proxy.
8
+ #
8
9
  # Thank you Sai Venkat for helping kickstart the ruby driver.
9
10
  #
10
11
  # Author:: Narayan Raman (mailto:narayan@sahi.co.in)
11
12
  # Copyright:: Copyright (c) 2006 V Narayan Raman
12
13
  # License:: Apache License, Version 2.0
13
14
  #
14
- # Download Sahi from http://sahi.co.in/w/
15
+ # Download Sahi from http://sahi.co.in/ .
15
16
  # Java 1.5 or greater is needed to run Sahi.
16
17
  #
17
18
  # Start Sahi:
18
- # cd sahi\userdata\bin
19
- # start_sahi.bat
19
+ # cd sahi\userdata\bin;
20
+ # start_sahi.bat;
20
21
  #
21
22
  # or
22
23
  #
23
- # cd sahi/userdata/bin
24
- # start_sahi.sh
24
+ # cd sahi/userdata/bin;
25
+ # start_sahi.sh;
25
26
  #
26
27
  # Point the browser proxy settings to localhost 9999.
27
28
  #
@@ -113,20 +114,16 @@ module Sahi
113
114
  def response(url, qs={})
114
115
  return Net::HTTP.post_form(URI.parse(url), qs).body
115
116
  end
116
-
117
- def execute()
118
- end
119
-
120
-
121
- def navigate_to(url, forceReload=false)
122
- execute_step("_sahi._navigateTo(\"" + url + "\", "+ (forceReload.to_s()) +")");
117
+
118
+ # navigates to the given url
119
+ def navigate_to(url, force_reload=false)
120
+ execute_step("_sahi._navigateTo(\"" + url + "\", "+ (force_reload.to_s()) +")");
123
121
  end
124
122
 
125
123
  def execute_step(step)
126
124
  if popup?()
127
125
  step = "_sahi._popup(#{Utils.quoted(@popup_name)})." + step
128
126
  end
129
- puts step if @print_steps
130
127
  exec_command("setStep", {"step" => step})
131
128
  i = 0
132
129
  while (i < 500)
@@ -258,7 +255,7 @@ module Sahi
258
255
  return fetch("_sahi._title()")
259
256
  end
260
257
 
261
- # waits for specified time (in seconds)
258
+ # waits for specified time (in seconds).
262
259
  # if a block is passed, it will wait till the block evaluates to true or till the specified timeout, which ever is earlier.
263
260
  def wait(timeout)
264
261
  total = 0;
@@ -279,7 +276,9 @@ module Sahi
279
276
  end
280
277
  end
281
278
  end
282
-
279
+
280
+ #private :check_proxy, :is_ready?, :exec_command, :check_nil
281
+
283
282
  end
284
283
 
285
284
 
@@ -299,7 +298,8 @@ module Sahi
299
298
  class ElementStub
300
299
  @@actions = {"click"=>"click", "mouse_over"=>"mouseOver",
301
300
  "focus"=>"focus", "remove_focus"=>"removeFocus",
302
- "check"=>"check", "uncheck"=>"uncheck"}
301
+ "check"=>"check", "uncheck"=>"uncheck",
302
+ "dblclick"=>"doubleClick", "right_click"=>"rightClick"}
303
303
  def initialize (browser, type, identifiers)
304
304
  @type = type
305
305
  @browser = browser
@@ -319,7 +319,7 @@ module Sahi
319
319
  end
320
320
 
321
321
  # drag element and drop on another element
322
- def dragAndDropOn(el2)
322
+ def drag_and_drop_on(el2)
323
323
  @browser.execute_step("_sahi._dragDrop(#{self.to_s()}, #{el2.to_s()})")
324
324
  end
325
325
 
@@ -354,7 +354,7 @@ module Sahi
354
354
  end
355
355
 
356
356
  # returns checked state of checkbox or radio button
357
- def checked()
357
+ def checked?()
358
358
  return fetch("checked") == "true";
359
359
  end
360
360
 
@@ -395,15 +395,41 @@ module Sahi
395
395
  end
396
396
 
397
397
  # returns true if the element exists on the browser
398
- def exists?
399
- return "true".eql?(@browser.fetch("_sahi._exists(#{self.to_s()})"))
398
+ def exists?(optimistic = false)
399
+ return self.exists1?() if optimistic;
400
+ (1..5).each do
401
+ return true if self.exists1?();
402
+ end
403
+ return false;
400
404
  end
401
405
 
406
+ def exists1?
407
+ return "true".eql?(@browser.fetch("_sahi._exists(#{self.to_s()})"))
408
+ end
409
+
402
410
  # returns true if the element exists and is visible on the browser
403
- def visible?
404
- return "true".eql?(@browser.fetch("_sahi._isVisible(#{self.to_s()})"))
411
+ def visible?(optimistic = false)
412
+ return self.visible1?() if optimistic;
413
+ (1..5).each do
414
+ return true if self.visible1?();
415
+ end
416
+ return false;
405
417
  end
406
418
 
419
+ def visible1?
420
+ return "true".eql?(@browser.fetch("_sahi._isVisible(#{self.to_s()})"))
421
+ end
422
+
423
+ # returns true if the element contains this text
424
+ def contains_text?(text)
425
+ return @browser.fetch("_sahi._containsText(#{self.to_s()}, #{Utils.quoted(text)})")
426
+ end
427
+
428
+ # returns true if the element contains this html
429
+ def contains_html?(html)
430
+ return @browser.fetch("_sahi._containsHTML(#{self.to_s()}, #{Utils.quoted(html)})")
431
+ end
432
+
407
433
  def to_s
408
434
  return "_sahi._#{@type }(#{concat_identifiers(@identifiers).join(", ") })"
409
435
  end
@@ -411,6 +437,7 @@ module Sahi
411
437
  def concat_identifiers(ids)
412
438
  return ids.collect {|id| id.kind_of?(String) ? Utils.quoted(id) : id.to_s()}
413
439
  end
440
+ #private :concat_identifiers, :exists1?, :visible1?
414
441
  end
415
442
 
416
443
  class Utils
@@ -1,5 +1,5 @@
1
1
  require 'test/unit'
2
- require "../lib/sahi"
2
+ require 'sahi'
3
3
 
4
4
  class SahiDriverTest < Test::Unit::TestCase
5
5
  def setup
@@ -17,15 +17,18 @@ class SahiDriverTest < Test::Unit::TestCase
17
17
  end
18
18
 
19
19
  def init_browser()
20
- userdata_dir = "D:/sahi/sf/sahi_993/userdata"
20
+ userdata_dir = "../../userdata"
21
21
  browser_path = "C:\\Program Files\\Mozilla Firefox\\firefox.exe"
22
22
  browser_options = "-profile #{userdata_dir}/browser/ff/profiles/sahi0 -no-remote"
23
+ #browser_path = "C:\\Program Files\\Internet Explorer\\iexplore.exe"
24
+ #browser_options = "-nomerge"
25
+
23
26
  return Sahi::Browser.new(browser_path, browser_options)
24
27
  end
25
28
 
26
29
 
27
30
  def test1
28
- @browser.navigate_to("http://narayan:10000/demo/formTest.htm")
31
+ @browser.navigate_to(@base_url + "/demo/formTest.htm")
29
32
  @browser.textbox("t1").value = "aaa"
30
33
  @browser.link("Back").click
31
34
  @browser.link("Table Test").click
@@ -53,339 +56,363 @@ class SahiDriverTest < Test::Unit::TestCase
53
56
  end
54
57
 
55
58
 
56
- def test_fetch()
57
- @browser.navigate_to(@base_url + "/demo/formTest.htm")
58
- assert_equal(@base_url + "/demo/formTest.htm", @browser.fetch("window.location.href"))
59
- end
59
+ def test_fetch()
60
+ @browser.navigate_to(@base_url + "/demo/formTest.htm")
61
+ assert_equal(@base_url + "/demo/formTest.htm", @browser.fetch("window.location.href"))
62
+ end
60
63
 
61
64
  def test_accessors()
62
- @browser.navigate_to(@base_url + "/demo/formTest.htm")
63
- assert_equal("", @browser.textbox("t1").value)
64
- assert(@browser.textbox(1).exists?)
65
- assert(@browser.textbox("$a_dollar").exists?)
66
- @browser.textbox("$a_dollar").value = ("adas")
67
- assert_equal("", @browser.textbox(1).value)
68
- assert(@browser.textarea("ta1").exists?)
69
- assert_equal("", @browser.textarea("ta1").value)
70
- assert(@browser.textarea(1).exists?)
71
- assert_equal("", @browser.textarea(1).value)
72
- assert(@browser.checkbox("c1").exists?)
73
- assert_equal("cv1", @browser.checkbox("c1").value)
74
- assert(@browser.checkbox(1).exists?)
75
- assert_equal("cv2", @browser.checkbox(1).value)
76
- assert(@browser.checkbox("c1[1]").exists?)
77
- assert_equal("cv3", @browser.checkbox("c1[1]").value)
78
- assert(@browser.checkbox(3).exists?)
79
- assert_equal("", @browser.checkbox(3).value)
80
- assert(@browser.radio("r1").exists?)
81
- assert_equal("rv1", @browser.radio("r1").value)
82
- assert(@browser.password("p1").exists?)
83
- assert_equal("", @browser.password("p1").value)
84
- assert(@browser.password(1).exists?)
85
- assert_equal("", @browser.password(1).value)
86
- assert(@browser.select("s1").exists?)
87
- assert_equal("o1", @browser.select("s1").selected_text())
88
- assert(@browser.select("s1Id[1]").exists?)
89
- assert_equal("o1", @browser.select("s1Id[1]").selected_text())
90
- assert(@browser.select(2).exists?)
91
- assert_equal("o1", @browser.select(2).selected_text())
92
- assert(@browser.button("button value").exists?)
93
- assert(@browser.button("btnName[1]").exists?)
94
- assert(@browser.button("btnId[2]").exists?)
95
- assert(@browser.button(3).exists?)
96
- assert(@browser.submit("Add").exists?)
97
- assert(@browser.submit("submitBtnName[1]").exists?)
98
- assert(@browser.submit("submitBtnId[2]").exists?)
99
- assert(@browser.submit(3).exists?)
100
- assert(@browser.image("imageAlt1").exists?)
101
- assert(@browser.image("imageId1[1]").exists?)
102
- assert(@browser.image(2).exists?)
103
- assert(!@browser.link("Back22").exists?)
104
- assert(@browser.link("Back").exists?)
105
- assert(@browser.accessor("document.getElementById('s1Id')").exists?)
106
- end
65
+ @browser.navigate_to(@base_url + "/demo/formTest.htm")
66
+ assert_equal("", @browser.textbox("t1").value)
67
+ assert(@browser.textbox(1).exists?)
68
+ assert(@browser.textbox("$a_dollar").exists?)
69
+ @browser.textbox("$a_dollar").value = ("adas")
70
+ assert_equal("", @browser.textbox(1).value)
71
+ assert(@browser.textarea("ta1").exists?)
72
+ assert_equal("", @browser.textarea("ta1").value)
73
+ assert(@browser.textarea(1).exists?)
74
+ assert_equal("", @browser.textarea(1).value)
75
+ assert(@browser.checkbox("c1").exists?)
76
+ assert_equal("cv1", @browser.checkbox("c1").value)
77
+ assert(@browser.checkbox(1).exists?)
78
+ assert_equal("cv2", @browser.checkbox(1).value)
79
+ assert(@browser.checkbox("c1[1]").exists?)
80
+ assert_equal("cv3", @browser.checkbox("c1[1]").value)
81
+ assert(@browser.checkbox(3).exists?)
82
+ assert_equal("", @browser.checkbox(3).value)
83
+ assert(@browser.radio("r1").exists?)
84
+ assert_equal("rv1", @browser.radio("r1").value)
85
+ assert(@browser.password("p1").exists?)
86
+ assert_equal("", @browser.password("p1").value)
87
+ assert(@browser.password(1).exists?)
88
+ assert_equal("", @browser.password(1).value)
89
+ assert(@browser.select("s1").exists?)
90
+ assert_equal("o1", @browser.select("s1").selected_text())
91
+ assert(@browser.select("s1Id[1]").exists?)
92
+ assert_equal("o1", @browser.select("s1Id[1]").selected_text())
93
+ assert(@browser.select(2).exists?)
94
+ assert_equal("o1", @browser.select(2).selected_text())
95
+ assert(@browser.button("button value").exists?)
96
+ assert(@browser.button("btnName[1]").exists?)
97
+ assert(@browser.button("btnId[2]").exists?)
98
+ assert(@browser.button(3).exists?)
99
+ assert(@browser.submit("Add").exists?)
100
+ assert(@browser.submit("submitBtnName[1]").exists?)
101
+ assert(@browser.submit("submitBtnId[2]").exists?)
102
+ assert(@browser.submit(3).exists?)
103
+ assert(@browser.image("imageAlt1").exists?)
104
+ assert(@browser.image("imageId1[1]").exists?)
105
+ assert(@browser.image(2).exists?)
106
+ assert(!@browser.link("Back22").exists?)
107
+ assert(@browser.link("Back").exists?)
108
+ assert(@browser.accessor("document.getElementById('s1Id')").exists?)
109
+ end
110
+
111
+ def test_select()
112
+ @browser.navigate_to(@base_url + "/demo/formTest.htm")
113
+ assert_equal("o1", @browser.select("s1Id[1]").selected_text())
114
+ @browser.select("s1Id[1]").choose("o2")
115
+ assert_equal("o2", @browser.select("s1Id[1]").selected_text())
116
+ end
117
+
118
+ def test_set_file()
119
+ @browser.navigate_to(@base_url + "/demo/php/fileUpload.htm")
120
+ @browser.file("file").file = "scripts/demo/uploadme.txt";
121
+ @browser.submit("Submit Single").click;
122
+ assert(@browser.span("size").exists?)
123
+ assert_not_nil(@browser.span("size").text().index("0.3046875 Kb"))
124
+ assert_not_nil(@browser.span("type").text().index("Single"))
125
+ @browser.link("Back to form").click;
126
+ end
127
+
128
+ def test_multi_file_upload()
129
+ @browser.navigate_to(@base_url + "/demo/php/fileUpload.htm")
130
+ @browser.file("file[]").file = "scripts/demo/uploadme.txt";
131
+ @browser.file("file[]").file = "scripts/demo/uploadme2.txt";
132
+ @browser.submit("Submit Array").click;
133
+ assert_not_nil(@browser.span("type").text().index("Array"))
134
+ assert_not_nil(@browser.span("file").text().index("uploadme.txt"))
135
+ assert_not_nil(@browser.span("size").text().index("0.3046875 Kb"))
136
+
137
+ assert_not_nil(@browser.span("file[1]").text().index("uploadme2.txt"))
138
+ assert_not_nil(@browser.span("size[1]").text().index("0.32421875 Kb"))
139
+ end
140
+
141
+ def test_clicks()
142
+ @browser.navigate_to(@base_url + "/demo/formTest.htm")
143
+ assert_not_nil(@browser.checkbox("c1"))
144
+ @browser.checkbox("c1").click;
145
+ assert_equal("true", @browser.checkbox("c1").fetch("checked"))
146
+ @browser.checkbox("c1").click;
147
+ assert_equal("false", @browser.checkbox("c1").fetch("checked"))
148
+
149
+ assert_not_nil(@browser.radio("r1"))
150
+ @browser.radio("r1").click;
151
+ assert_equal("true", @browser.radio("r1").fetch("checked"))
152
+ assert(@browser.radio("r1").checked?)
153
+ assert(!@browser.radio("r1[1]").checked?)
154
+ @browser.radio("r1[1]").click;
155
+ assert_equal("false", @browser.radio("r1").fetch("checked"))
156
+ assert(@browser.radio("r1[1]").checked?)
157
+ assert(!@browser.radio("r1").checked?)
158
+ end
107
159
 
108
- def test_select()
109
- @browser.navigate_to(@base_url + "/demo/formTest.htm")
110
- assert_equal("o1", @browser.select("s1Id[1]").selected_text())
111
- @browser.select("s1Id[1]").choose("o2")
112
- assert_equal("o2", @browser.select("s1Id[1]").selected_text())
113
- end
114
-
115
- def test_set_file()
116
- @browser.navigate_to(@base_url + "/demo/php/fileUpload.htm")
117
- @browser.file("file").file = "D:/sahi/sf/sahi_993/userdata/scripts/demo/uploadme.txt";
118
- @browser.submit("Submit Single").click;
119
- assert(@browser.span("size").exists?)
120
- assert_not_nil(@browser.span("size").text().index("0.3046875 Kb"))
121
- assert_not_nil(@browser.span("type").text().index("Single"))
122
- @browser.link("Back to form").click;
123
- end
124
-
125
- def test_multi_file_upload()
126
- @browser.navigate_to(@base_url + "/demo/php/fileUpload.htm")
127
- @browser.file("file[]").file = "D:/sahi/sf/sahi_993/userdata/scripts/demo/uploadme.txt";
128
- @browser.file("file[]").file = "D:/sahi/sf/sahi_993/userdata/scripts/demo/uploadme2.txt";
129
- @browser.submit("Submit Array").click;
130
- assert_not_nil(@browser.span("type").text().index("Array"))
131
- assert_not_nil(@browser.span("file").text().index("uploadme.txt"))
132
- assert_not_nil(@browser.span("size").text().index("0.3046875 Kb"))
133
-
134
- assert_not_nil(@browser.span("file[1]").text().index("uploadme2.txt"))
135
- assert_not_nil(@browser.span("size[1]").text().index("0.32421875 Kb"))
136
- end
137
-
138
- def test_clicks()
139
- @browser.navigate_to(@base_url + "/demo/formTest.htm")
140
- assert_not_nil(@browser.checkbox("c1"))
141
- @browser.checkbox("c1").click;
142
- assert_equal("true", @browser.checkbox("c1").fetch("checked"))
143
- @browser.checkbox("c1").click;
144
- assert_equal("false", @browser.checkbox("c1").fetch("checked"))
145
-
146
- assert_not_nil(@browser.radio("r1"))
147
- @browser.radio("r1").click;
148
- assert_equal("true", @browser.radio("r1").fetch("checked"))
149
- assert(@browser.radio("r1").checked())
150
- assert(!@browser.radio("r1[1]").checked())
151
- @browser.radio("r1[1]").click;
152
- assert_equal("false", @browser.radio("r1").fetch("checked"))
153
- assert(@browser.radio("r1[1]").checked())
154
- assert(!@browser.radio("r1").checked())
155
- end
156
-
157
- def test_links()
158
- @browser.navigate_to(@base_url + "/demo/index.htm")
159
- @browser.link("Link Test").click;
160
- @browser.link("linkByContent").click;
161
- @browser.link("Back").click;
162
- @browser.link("link with return true").click;
163
- assert(@browser.textarea("ta1").exists?)
164
- assert_equal("", @browser.textarea("ta1").value)
165
- @browser.link("Back").click;
166
- @browser.link("Link Test").click;
167
- @browser.link("link with return false").click;
168
- assert(@browser.textbox("t1").exists?)
169
- assert_equal("formTest link with return false", @browser.textbox("t1").value)
170
- assert(@browser.link("linkByContent").exists?)
160
+ def test_links()
161
+ @browser.navigate_to(@base_url + "/demo/index.htm")
162
+ @browser.link("Link Test").click;
163
+ @browser.link("linkByContent").click;
164
+ @browser.link("Back").click;
165
+ @browser.link("link with return true").click;
166
+ assert(@browser.textarea("ta1").exists?)
167
+ assert_equal("", @browser.textarea("ta1").value)
168
+ @browser.link("Back").click;
169
+ @browser.link("Link Test").click;
170
+ @browser.link("link with return false").click;
171
+ assert(@browser.textbox("t1").exists?)
172
+ assert_equal("formTest link with return false", @browser.textbox("t1").value)
173
+ assert(@browser.link("linkByContent").exists?)
171
174
 
172
- @browser.link("link with returnValue=false").click;
173
- assert(@browser.textbox("t1").exists?)
174
- assert_equal("formTest link with returnValue=false", @browser.textbox("t1").value)
175
- @browser.link("added handler using js").click;
176
- assert(@browser.textbox("t1").exists?)
177
- assert_equal("myFn called", @browser.textbox("t1").value)
178
- @browser.textbox("t1").value = ("")
179
- @browser.image("imgWithLink").click;
180
- @browser.link("Link Test").click;
181
- @browser.image("imgWithLinkNoClick").click;
182
- assert(@browser.textbox("t1").exists?)
183
- assert_equal("myFn called", @browser.textbox("t1").value)
184
- @browser.link("Back").click;
185
- end
175
+ @browser.link("link with returnValue=false").click;
176
+ assert(@browser.textbox("t1").exists?)
177
+ assert_equal("formTest link with returnValue=false", @browser.textbox("t1").value)
178
+ @browser.link("added handler using js").click;
179
+ assert(@browser.textbox("t1").exists?)
180
+ assert_equal("myFn called", @browser.textbox("t1").value)
181
+ @browser.textbox("t1").value = ("")
182
+ @browser.image("imgWithLink").click;
183
+ @browser.link("Link Test").click;
184
+ @browser.image("imgWithLinkNoClick").click;
185
+ assert(@browser.textbox("t1").exists?)
186
+ assert_equal("myFn called", @browser.textbox("t1").value)
187
+ @browser.link("Back").click;
188
+ end
186
189
 
187
190
 
188
- def test_popup_title_name_mix()
189
- @browser.navigate_to(@base_url + "/demo/index.htm")
190
- @browser.link("Window Open Test").click;
191
- @browser.link("Window Open Test With Title").click;
192
- @browser.link("Table Test").click;
193
-
194
- popup_popwin = @browser.popup("popWin")
195
-
196
- popup_popwin.link("Link Test").click;
197
- @browser.link("Back").click;
198
-
199
- popup_with_title = @browser.popup("With Title")
200
-
201
- popup_with_title.link("Form Test").click;
202
- @browser.link("Table Test").click;
203
- popup_with_title.textbox("t1").value = ("d")
204
- @browser.link("Back").click;
205
- popup_with_title.textbox(1).value = ("e")
206
- @browser.link("Table Test").click;
207
- popup_with_title.textbox("name").value = ("f")
208
- assert_not_nil(popup_popwin.link("linkByHtml").exists?)
191
+ def test_popup_title_name_mix()
192
+ @browser.navigate_to(@base_url + "/demo/index.htm")
193
+ @browser.link("Window Open Test").click;
194
+ @browser.link("Window Open Test With Title").click;
195
+ @browser.link("Table Test").click;
196
+
197
+ popup_popwin = @browser.popup("popWin")
198
+
199
+ popup_popwin.link("Link Test").click;
200
+ @browser.link("Back").click;
201
+
202
+ popup_with_title = @browser.popup("With Title")
203
+
204
+ popup_with_title.link("Form Test").click;
205
+ @browser.link("Table Test").click;
206
+ popup_with_title.textbox("t1").value = ("d")
207
+ @browser.link("Back").click;
208
+ popup_with_title.textbox(1).value = ("e")
209
+ @browser.link("Table Test").click;
210
+ popup_with_title.textbox("name").value = ("f")
211
+ assert_not_nil(popup_popwin.link("linkByHtml").exists?)
209
212
 
210
- assert_not_nil(@browser.cell("CellWithId"))
211
- assert_equal("Cell with id", @browser.cell("CellWithId").text)
212
- popup_with_title.link("Break Frames").click;
213
-
214
- popupSahiTests = @browser.popup("Sahi Tests")
215
- popupSahiTests.close()
216
-
217
- popup_popwin.link("Break Frames").click;
218
- popup_popwin.close()
219
- @browser.link("Back").click;
220
- end
213
+ assert_not_nil(@browser.cell("CellWithId"))
214
+ assert_equal("Cell with id", @browser.cell("CellWithId").text)
215
+ popup_with_title.link("Break Frames").click;
216
+
217
+ popupSahiTests = @browser.popup("Sahi Tests")
218
+ popupSahiTests.close()
219
+
220
+ popup_popwin.link("Break Frames").click;
221
+ popup_popwin.close()
222
+ @browser.link("Back").click;
223
+ end
221
224
 
222
-
223
- def test_in()
224
- @browser.navigate_to(@base_url + "/demo/tableTest.htm")
225
- assert_equal("111", @browser.textarea("ta").near(@browser.cell("a1")).value)
226
- assert_equal("222", @browser.textarea("ta").near(@browser.cell("a2")).value)
227
- @browser.link("Go back").in(@browser.cell("a1").parent_node()).click;
228
- assert(@browser.link("Link Test").exists?)
229
- end
225
+
226
+ def test_in()
227
+ @browser.navigate_to(@base_url + "/demo/tableTest.htm")
228
+ assert_equal("111", @browser.textarea("ta").near(@browser.cell("a1")).value)
229
+ assert_equal("222", @browser.textarea("ta").near(@browser.cell("a2")).value)
230
+ @browser.link("Go back").in(@browser.cell("a1").parent_node()).click;
231
+ assert(@browser.link("Link Test").exists?)
232
+ end
230
233
 
231
234
  def test_exists()
232
- @browser.navigate_to(@base_url + "/demo/index.htm")
233
- assert(@browser.link("Link Test").exists?)
234
- assert(!@browser.link("Link Test NonExistent").exists?)
235
- end
236
-
237
- def alert1(message)
238
- @browser.navigate_to(@base_url + "/demo/alertTest.htm")
239
- @browser.textbox("t1").value = ("Message " + message)
240
- @browser.button("Click For Alert").click;
241
- @browser.navigate_to("/demo/alertTest.htm")
242
- sleep(1)
243
- assert_equal("Message " + message, @browser.last_alert())
244
- @browser.clear_last_alert()
245
- assert_nil(@browser.last_alert())
246
- end
235
+ @browser.navigate_to(@base_url + "/demo/index.htm")
236
+ assert(@browser.link("Link Test").exists?)
237
+ assert(!@browser.link("Link Test NonExistent").exists?)
238
+ end
239
+
240
+ def alert1(message)
241
+ @browser.navigate_to(@base_url + "/demo/alertTest.htm")
242
+ @browser.textbox("t1").value = ("Message " + message)
243
+ @browser.button("Click For Alert").click;
244
+ @browser.navigate_to("/demo/alertTest.htm")
245
+ sleep(1)
246
+ assert_equal("Message " + message, @browser.last_alert())
247
+ @browser.clear_last_alert()
248
+ assert_nil(@browser.last_alert())
249
+ end
247
250
 
248
- def test_alert()
249
- alert1("One")
250
- alert1("Two")
251
- alert1("Three")
252
- @browser.button("Click For Multiline Alert").click;
253
- assert_equal("You must correct the following Errors:\nYou must select a messaging price plan.\nYou must select an international messaging price plan.\nYou must enter a value for the Network Lookup Charge", @browser.last_alert())
254
- end
251
+ def test_alert()
252
+ alert1("One")
253
+ alert1("Two")
254
+ alert1("Three")
255
+ @browser.button("Click For Multiline Alert").click;
256
+ assert_equal("You must correct the following Errors:\nYou must select a messaging price plan.\nYou must select an international messaging price plan.\nYou must enter a value for the Network Lookup Charge", @browser.last_alert())
257
+ end
255
258
 
256
- def test_confirm()
257
- @browser.navigate_to(@base_url + "/demo/confirmTest.htm")
258
- @browser.expect_confirm("Some question?", true)
259
- @browser.button("Click For Confirm").click;
260
- assert_equal("oked", @browser.textbox("t1").value)
261
- @browser.navigate_to("/demo/confirmTest.htm")
262
- sleep(1)
263
- assert_equal("Some question?", @browser.last_confirm())
264
- @browser.clear_last_confirm()
265
- assert_nil(@browser.last_confirm())
259
+ def test_confirm()
260
+ @browser.navigate_to(@base_url + "/demo/confirmTest.htm")
261
+ @browser.expect_confirm("Some question?", true)
262
+ @browser.button("Click For Confirm").click;
263
+ assert_equal("oked", @browser.textbox("t1").value)
264
+ @browser.navigate_to("/demo/confirmTest.htm")
265
+ sleep(1)
266
+ assert_equal("Some question?", @browser.last_confirm())
267
+ @browser.clear_last_confirm()
268
+ assert_nil(@browser.last_confirm())
266
269
 
267
- @browser.expect_confirm("Some question?", false)
268
- @browser.button("Click For Confirm").click;
269
- assert_equal("canceled", @browser.textbox("t1").value)
270
- assert_equal("Some question?", @browser.last_confirm())
271
- @browser.clear_last_confirm()
272
- assert_nil(@browser.last_confirm())
270
+ @browser.expect_confirm("Some question?", false)
271
+ @browser.button("Click For Confirm").click;
272
+ assert_equal("canceled", @browser.textbox("t1").value)
273
+ assert_equal("Some question?", @browser.last_confirm())
274
+ @browser.clear_last_confirm()
275
+ assert_nil(@browser.last_confirm())
273
276
 
274
- @browser.expect_confirm("Some question?", true)
275
- @browser.button("Click For Confirm").click;
276
- assert_equal("oked", @browser.textbox("t1").value)
277
- assert_equal("Some question?", @browser.last_confirm())
278
- @browser.clear_last_confirm()
279
- assert_nil(@browser.last_confirm())
280
- end
281
-
282
- def test_prompt()
283
- @browser.navigate_to(@base_url + "/demo/promptTest.htm")
284
- @browser.expect_prompt("Some prompt?", "abc")
285
- @browser.button("Click For Prompt").click;
286
- assert_not_nil(@browser.textbox("t1"))
287
- assert_equal("abc", @browser.textbox("t1").value)
288
- @browser.navigate_to("/demo/promptTest.htm")
289
- @browser.waitFor(2000)
290
- assert_equal("Some prompt?", @browser.last_prompt())
291
- @browser.clear_last_prompt()
292
- assert_nil(@browser.last_prompt())
293
- end
277
+ @browser.expect_confirm("Some question?", true)
278
+ @browser.button("Click For Confirm").click;
279
+ assert_equal("oked", @browser.textbox("t1").value)
280
+ assert_equal("Some question?", @browser.last_confirm())
281
+ @browser.clear_last_confirm()
282
+ assert_nil(@browser.last_confirm())
283
+ end
284
+
285
+ def test_prompt()
286
+ @browser.navigate_to(@base_url + "/demo/promptTest.htm")
287
+ @browser.expect_prompt("Some prompt?", "abc")
288
+ @browser.button("Click For Prompt").click;
289
+ assert_not_nil(@browser.textbox("t1"))
290
+ assert_equal("abc", @browser.textbox("t1").value)
291
+ @browser.navigate_to("/demo/promptTest.htm")
292
+ @browser.waitFor(2000)
293
+ assert_equal("Some prompt?", @browser.last_prompt())
294
+ @browser.clear_last_prompt()
295
+ assert_nil(@browser.last_prompt())
296
+ end
294
297
 
295
298
 
296
- def test_visible
297
- @browser.navigate_to(@base_url + "/demo/index.htm")
298
- @browser.link("Visible Test").click;
299
- assert(@browser.spandiv("using display").visible?)
299
+ def test_visible
300
+ @browser.navigate_to(@base_url + "/demo/index.htm")
301
+ @browser.link("Visible Test").click;
302
+ assert(@browser.spandiv("using display").visible?)
300
303
 
301
- @browser.button("Display none").click;
302
- assert(!@browser.spandiv("using display").visible?)
303
- @browser.button("Display block").click;
304
- assert(@browser.spandiv("using display").visible?)
304
+ @browser.button("Display none").click;
305
+ assert(!@browser.spandiv("using display").visible?)
306
+ @browser.button("Display block").click;
307
+ assert(@browser.spandiv("using display").visible?)
305
308
 
306
- @browser.button("Display none").click;
307
- assert(!@browser.spandiv("using display").visible?)
308
- @browser.button("Display inline").click;
309
- assert(@browser.spandiv("using display").visible?)
309
+ @browser.button("Display none").click;
310
+ assert(!@browser.spandiv("using display").visible?)
311
+ @browser.button("Display inline").click;
312
+ assert(@browser.spandiv("using display").visible?)
310
313
 
311
- assert(@browser.spandiv("using visibility").visible?)
312
- @browser.button("Visibility hidden").click;
313
- assert(!@browser.spandiv("using visibility").visible?)
314
- @browser.button("Visibility visible").click;
315
- assert(@browser.spandiv("using visibility").visible?)
314
+ assert(@browser.spandiv("using visibility").visible?)
315
+ @browser.button("Visibility hidden").click;
316
+ assert(!@browser.spandiv("using visibility").visible?)
317
+ @browser.button("Visibility visible").click;
318
+ assert(@browser.spandiv("using visibility").visible?)
316
319
 
317
- assert(!@browser.byId("nestedBlockInNone").visible?)
318
- assert(!@browser.byId("absoluteNestedBlockInNone").visible?)
319
- end
320
-
321
- def test_check()
322
- @browser.navigate_to(@base_url + "/demo/")
323
- @browser.link("Form Test").click;
324
- assert_equal("false", @browser.checkbox("c1").fetch("checked"))
325
- assert(!@browser.checkbox("c1").checked())
326
- @browser.checkbox("c1").check()
327
- assert_equal("true", @browser.checkbox("c1").fetch("checked"))
328
- assert(@browser.checkbox("c1").checked())
329
- @browser.checkbox("c1").check()
330
- assert_equal("true", @browser.checkbox("c1").fetch("checked"))
331
- @browser.checkbox("c1").uncheck()
332
- assert_equal("false", @browser.checkbox("c1").fetch("checked"))
333
- @browser.checkbox("c1").uncheck()
334
- assert_equal("false", @browser.checkbox("c1").fetch("checked"))
335
- @browser.checkbox("c1").click;
336
- assert_equal("true", @browser.checkbox("c1").fetch("checked"))
337
- end
338
-
339
- def test_focus()
340
- @browser.navigate_to(@base_url + "/demo/focusTest.htm")
341
- @browser.textbox("t2").focus()
342
- assert_equal("focused", @browser.textbox("t1").value)
343
- @browser.textbox("t2").remove_focus()
344
- assert_equal("not focused", @browser.textbox("t1").value)
345
- @browser.textbox("t2").focus()
346
- assert_equal("focused", @browser.textbox("t1").value)
347
- end
348
-
349
- def test_title()
350
- @browser.navigate_to(@base_url + "/demo/index.htm")
351
- assert_equal("Sahi Tests", @browser.title)
352
- @browser.link("Form Test").click;
353
- assert_equal("Form Test", @browser.title)
354
- @browser.link("Back").click;
355
- @browser.link("Window Open Test With Title").click;
356
- assert_equal("With Title", @browser.popup("With Title").title)
357
- end
358
-
359
- def test_area()
360
- @browser.navigate_to(@base_url + "/demo/map.htm")
361
- @browser.navigate_to("map.htm")
362
- assert(@browser.area("Record").exists?)
363
- assert(@browser.area("Playback").exists?)
364
- assert(@browser.area("Info").exists?)
365
- assert(@browser.area("Circular").exists?)
366
- @browser.area("Record").mouse_over()
367
- assert_equal("Record", @browser.div("output").text)
368
- @browser.button("Clear").mouse_over()
369
- assert_equal("", @browser.div("output").text)
370
- @browser.area("Record").click;
371
- assert(@browser.link("linkByContent").exists?)
372
- #@browser.navigate_to("map.htm")
373
- end
320
+ assert(!@browser.byId("nestedBlockInNone").visible?)
321
+ assert(!@browser.byId("absoluteNestedBlockInNone").visible?)
322
+ end
323
+
324
+ def test_check()
325
+ @browser.navigate_to(@base_url + "/demo/")
326
+ @browser.link("Form Test").click;
327
+ assert_equal("false", @browser.checkbox("c1").fetch("checked"))
328
+ assert(!@browser.checkbox("c1").checked?)
329
+ @browser.checkbox("c1").check()
330
+ assert_equal("true", @browser.checkbox("c1").fetch("checked"))
331
+ assert(@browser.checkbox("c1").checked?)
332
+ @browser.checkbox("c1").check()
333
+ assert_equal("true", @browser.checkbox("c1").fetch("checked"))
334
+ @browser.checkbox("c1").uncheck()
335
+ assert_equal("false", @browser.checkbox("c1").fetch("checked"))
336
+ @browser.checkbox("c1").uncheck()
337
+ assert_equal("false", @browser.checkbox("c1").fetch("checked"))
338
+ @browser.checkbox("c1").click;
339
+ assert_equal("true", @browser.checkbox("c1").fetch("checked"))
340
+ end
341
+
342
+ def test_focus()
343
+ @browser.navigate_to(@base_url + "/demo/focusTest.htm")
344
+ @browser.textbox("t2").focus()
345
+ assert_equal("focused", @browser.textbox("t1").value)
346
+ @browser.textbox("t2").remove_focus()
347
+ assert_equal("not focused", @browser.textbox("t1").value)
348
+ @browser.textbox("t2").focus()
349
+ assert_equal("focused", @browser.textbox("t1").value)
350
+ end
374
351
 
375
- def test_dragdrop()
376
- @browser.navigate_to("http://www.snook.ca/technical/mootoolsdragdrop/")
377
- @browser.div("Drag me").dragAndDropOn(@browser.div("Item 2"))
378
- assert @browser.div("dropped").exists?
379
- assert @browser.div("Item 1").exists?
380
- assert @browser.div("Item 3").exists?
381
- assert @browser.div("Item 4").exists?
382
- end
352
+ def test_title()
353
+ @browser.navigate_to(@base_url + "/demo/index.htm")
354
+ assert_equal("Sahi Tests", @browser.title)
355
+ @browser.link("Form Test").click;
356
+ assert_equal("Form Test", @browser.title)
357
+ @browser.link("Back").click;
358
+ @browser.link("Window Open Test With Title").click;
359
+ assert_equal("With Title", @browser.popup("With Title").title)
360
+ end
361
+
362
+ def test_area()
363
+ @browser.navigate_to(@base_url + "/demo/map.htm")
364
+ @browser.navigate_to("map.htm")
365
+ assert(@browser.area("Record").exists?)
366
+ assert(@browser.area("Playback").exists?)
367
+ assert(@browser.area("Info").exists?)
368
+ assert(@browser.area("Circular").exists?)
369
+ @browser.area("Record").mouse_over()
370
+ assert_equal("Record", @browser.div("output").text)
371
+ @browser.button("Clear").mouse_over()
372
+ assert_equal("", @browser.div("output").text)
373
+ @browser.area("Record").click;
374
+ assert(@browser.link("linkByContent").exists?)
375
+ #@browser.navigate_to("map.htm")
376
+ end
383
377
 
384
- def test_wait()
385
- @browser.navigate_to(@base_url + "/demo/waitCondition1.htm")
378
+ def test_dragdrop()
379
+ @browser.navigate_to("http://www.snook.ca/technical/mootoolsdragdrop/")
380
+ @browser.div("Drag me").drag_and_drop_on(@browser.div("Item 2"))
381
+ assert @browser.div("dropped").exists?
382
+ assert @browser.div("Item 1").exists?
383
+ assert @browser.div("Item 3").exists?
384
+ assert @browser.div("Item 4").exists?
385
+ end
386
+
387
+ def test_wait()
388
+ @browser.navigate_to(@base_url + "/demo/waitCondition1.htm")
386
389
  @browser.wait(15) {"populated" == @browser.textbox("t1").value}
387
- assert_equal("populated", @browser.textbox("t1").value)
388
- end
390
+ assert_equal("populated", @browser.textbox("t1").value)
391
+ end
392
+
393
+ def test_google()
394
+ @browser.navigate_to("http://www.google.com")
395
+ @browser.textbox("q").value = "sahi forums"
396
+ @browser.submit("Google Search").click
397
+ @browser.link("Sahi - Web Automation and Test Tool").click
398
+ @browser.link("Login").click
399
+ assert @browser.textbox("req_username").visible?
400
+ end
401
+
402
+ def test_dblclick()
403
+ @browser.navigate_to("#{@base_url}/demo/clicks.htm")
404
+ @browser.div("dbl click me").dblclick
405
+ assert_equal("[DOUBLE_CLICK]", @browser.textarea("t2").value)
406
+ @browser.button("Clear").click
407
+ end
408
+
409
+ def test_right_click()
410
+ @browser.navigate_to("#{@base_url}/demo/clicks.htm")
411
+ @browser.div("right click me").right_click
412
+ assert_equal("[RIGHT_CLICK]", @browser.textarea("t2").value)
413
+ @browser.button("Clear").click
414
+ end
415
+
389
416
 
390
417
  end
391
418
 
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 0
8
- - 0
9
- version: 1.0.0
8
+ - 1
9
+ version: 1.0.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Narayan Raman
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-03-21 00:00:00 +05:30
17
+ date: 2010-04-30 00:00:00 +05:30
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -45,7 +45,10 @@ dependencies:
45
45
  version: 0.1.1
46
46
  type: :runtime
47
47
  version_requirements: *id002
48
- description: Ruby driver for Sahi. Sahi is a web automation tool. Sahi runs as a proxy, and the browser needs to configured to use Sahi's proxy. The browser can then be driven via the Sahi ruby driver.
48
+ description: |-
49
+ Ruby driver for Sahi (http://sahi.co.in/). Sahi is a web automation tool.
50
+ Sahi runs as a proxy, and the browser needs to be configured to use Sahi's proxy.
51
+ The browser can then be driven via the Sahi Ruby driver.
49
52
  email: support@sahi.co.in
50
53
  executables: []
51
54