sahi 1.2.1 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 4fc17be0dcd8a323688ef2554ac53d1753fa8959
4
+ data.tar.gz: dccf4f8ab3a528997966c27f712d66393f482e71
5
+ SHA512:
6
+ metadata.gz: eaf53930e206010fb36a9e7b4942e41db34790b65c86c92e303171c7885708b04aa5db2a1bbf9a94caa4b1a84a19c5c1bb131b3ed7e63f3552fbe52e12ee0e17
7
+ data.tar.gz: 763f56c89466f704a7056f219a6f2b10fbecda3cf08ed822a86a771c66b64b4fc5b2f67ed8610229b5bec1e988e10ba167b3df4f98523db6e495c736aa6e7b23
@@ -111,7 +111,7 @@ module Sahi
111
111
 
112
112
  def exec_command(cmd, qs={})
113
113
  res = response("http://#{@proxy_host}:#{@proxy_port}/_s_/dyn/Driver_" + cmd, {"sahisid"=>@sahisid}.update(qs))
114
- return res
114
+ return res.force_encoding("UTF-8")
115
115
  end
116
116
 
117
117
  def response(url, qs={})
@@ -147,23 +147,93 @@ module Sahi
147
147
  end
148
148
  end
149
149
 
150
+ def prepare_window_action(oldTitle)
151
+ len = oldTitle.length
152
+ if (len > 30)
153
+ len = 30
154
+ end
155
+ titleToUse = fetch("_sahi.trim(#{Utils.quoted(oldTitle[0..30].strip)})")
156
+ newTitle = titleToUse.gsub(/[^0-9a-zA-Z ]/, '') + ' _' + Time.now.getutc.to_s
157
+ execute_step("window.document.title =" + Utils.quoted(newTitle))
158
+ wait(2);
159
+ return newTitle
160
+ end
161
+
162
+ def window_action(action)
163
+ title = fetch("window.top.document.title")
164
+ title = prepare_window_action(title)
165
+ puts ">" + title + "<"
166
+ exec_command("windowAction", {"action" => action, "title" => title})
167
+ end
168
+
169
+ def type_key_code_native(key)
170
+ exec_command("typeKeyCodeNative", {"key" => key})
171
+ end
172
+
173
+ def get_windows(activePeriod=nil)
174
+ if(activePeriod == nil)
175
+ str = exec_command("getWindowsAsJSON", {"activePeriod" => -1});
176
+ else
177
+ activePeriod = activePeriod * 1000
178
+ str = exec_command("getWindowsAsJSON", {"activePeriod" => activePeriod});
179
+ end
180
+ return JSON.parse(str)
181
+ end
182
+
183
+ def type_native(str)
184
+ exec_command("typeNative", {"str" => str})
185
+ end
186
+
187
+ def execute_sahi(step)
188
+ if popup?()
189
+ step = "_sahi._popup(#{Utils.quoted(@popup_name)})." + step
190
+ end
191
+ if domain?()
192
+ step = "_sahi._domain(#{Utils.quoted(@domain_name)})." + step
193
+ end
194
+ #puts step
195
+ exec_command("setStep", {"step" => step, 'addSahi' => true})
196
+ i = 0
197
+ while (i < 500)
198
+ sleep(0.1)
199
+ i+=1
200
+ check_done = exec_command("doneStep")
201
+ done = "true".eql?(check_done)
202
+
203
+ error = check_done.index("error:") == 0
204
+ return if done
205
+ if (error)
206
+ raise check_done
207
+ end
208
+ end
209
+ end
210
+
150
211
  def method_missing(m, *args, &block)
151
212
  return ElementStub.new(self, m.to_s, args)
152
213
  end
153
214
 
154
215
  # evaluates a javascript expression on the browser and fetches its value
155
- def fetch(expression)
216
+ def fetch(expression)
156
217
  key = "___lastValue___" + Time.now.getutc.to_s;
157
218
  execute_step("_sahi.setServerVarPlain('"+key+"', " + expression + ")")
158
219
  return check_nil(exec_command("getVariable", {"key" => key}))
159
- end
220
+ end
160
221
 
161
222
  # evaluates a javascript expression on the browser and returns true if value is true or "true"
162
223
  def fetch_boolean(expression)
163
224
  return fetch(expression) == "true"
164
225
  end
165
226
 
166
-
227
+ # returns element attributes of all elements of type attr matching the identifier within relations
228
+ def collect(els, attr=nil)
229
+ if(attr == nil)
230
+ return els.collect_similar()
231
+ else
232
+ return fetch("_sahi.collectAttributes(#{Utils.quoted(attr)}, #{Utils.quoted(els.to_type())}, #{els.to_identifiers()})").split(",___sahi___")
233
+ end
234
+ end
235
+
236
+
167
237
  def browser_js=(js)
168
238
  exec_command("setBrowserJS", {"browserJS"=>js})
169
239
  end
@@ -270,6 +340,41 @@ module Sahi
270
340
  execute_step("_sahi._clearLastPrompt()")
271
341
  end
272
342
 
343
+ # simulates the touch event
344
+ def touch()
345
+ execute_step("_sahi._touch(#{self.to_s()})")
346
+ end
347
+
348
+ # simulates the tap event
349
+ def tap()
350
+ execute_step("_sahi._tap(#{self.to_s()})")
351
+ end
352
+
353
+ # simulates the touchStart event
354
+ def touchStart()
355
+ execute_step("_sahi._touchStart(#{self.to_s()})")
356
+ end
357
+
358
+ # simulates the touchEnd event
359
+ def touchEnd()
360
+ execute_step("_sahi._touchEnd(#{self.to_s()})")
361
+ end
362
+
363
+ # simulates the touchCancel event
364
+ def touchCancel()
365
+ execute_step("_sahi._touchCancel(#{self.to_s()})")
366
+ end
367
+
368
+ # simulates the touchMove event
369
+ def touchMove(moveX, moveY, isRelative=true)
370
+ execute_step("_sahi._touchMove(#{self.to_s()}, moveX, moveY, isRelative)")
371
+ end
372
+
373
+ # simulates the swipe event
374
+ def swipe(moveX, moveY, isRelative=true)
375
+ execute_step("_sahi._touchMove(#{self.to_s()}, moveX, moveY, isRelative)")
376
+ end
377
+
273
378
  # set an expectation to set given value for specific prompt message
274
379
  def expect_prompt(message, input)
275
380
  execute_step("_sahi._expectPrompt(#{Utils.quoted(message)}, #{Utils.quoted(input) })")
@@ -305,6 +410,16 @@ module Sahi
305
410
  def title()
306
411
  return fetch("_sahi._title()")
307
412
  end
413
+
414
+ # return selection text
415
+
416
+ def selection_text(win = nil)
417
+ if(win != nil)
418
+ return fetch("_sahi._getSelectionText(#{win.to_s()})")
419
+ else
420
+ return fetch("_sahi._getSelectionText()")
421
+ end
422
+ end
308
423
 
309
424
  # returns true if browser is Internet Explorer
310
425
  def ie?()
@@ -408,13 +523,31 @@ module Sahi
408
523
  # choose option in a select box
409
524
  def choose(val)
410
525
  @browser.execute_step("_sahi._setSelected(#{self.to_s()}, #{val.to_json})")
411
- end
526
+ end
412
527
 
413
528
  # sets the value for textboxes or textareas. Also triggers necessary events.
414
529
  def value=(val)
415
530
  @browser.execute_step("_sahi._setValue(#{self.to_s()}, #{Utils.quoted(val)})")
416
531
  end
417
-
532
+
533
+ # select text for manipulation
534
+
535
+ def select_range(rangeStart, rangeEnd, type=nil)
536
+ if(type!= nil)
537
+ @browser.execute_step("_sahi._selectRange(#{self.to_s()}, rangeStart, rangeEnd, #{Utils.quoted(type)})")
538
+ else
539
+ @browser.execute_step("_sahi._selectRange(#{self.to_s()}, #{rangeStart}, #{rangeEnd})")
540
+ end
541
+ end
542
+
543
+ def select_text_range(searchText, position=nil)
544
+ if(position != nil)
545
+ @browser.execute_step("_sahi._selectTextRange(#{self.to_s()}, #{Utils.quoted(searchText)}, #{Utils.quoted(position)})")
546
+ else
547
+ @browser.execute_step("_sahi._selectTextRange(#{self.to_s()}, #{Utils.quoted(searchText)})")
548
+ end
549
+ end
550
+
418
551
  # returns value of textbox or textareas and other relevant input elements
419
552
  def value()
420
553
  return @browser.fetch("_sahi._getValue(#{self.to_s()})")
@@ -428,7 +561,7 @@ module Sahi
428
561
  else
429
562
  return @browser.fetch("_sahi.getAttribute(#{self.to_s()}, #{Utils.quoted(attr)})")
430
563
  end
431
- else
564
+ else
432
565
  return @browser.fetch("#{self.to_s()}")
433
566
  end
434
567
  end
@@ -479,11 +612,41 @@ module Sahi
479
612
  # browser.cell(0).under(browser.cell("Header")) will denote the cell visually under "Header"
480
613
  # browser.cell(0).near(browser.cell("Book")).under(browser.cell("Cost")) may be used to denote the Cost of Book in a grid
481
614
 
482
- def under(el2)
483
- @identifiers << ElementStub.new(@browser, "under", [el2])
615
+ def under(el2, offset=nil, limit_under=nil)
616
+ ar = (offset!=nil || limit_under!=nil) ? [el2, offset, limit_under] : [el2];
617
+ @identifiers << ElementStub.new(@browser, "under", ar)
618
+ return self
619
+ end
620
+
621
+ def above(el2, offset=nil, limit_under=nil)
622
+ ar = (offset!=nil || limit_under!=nil) ? [el2, offset, limit_under] : [el2];
623
+ @identifiers << ElementStub.new(@browser, "above", ar)
624
+ return self
625
+ end
626
+
627
+ def above_or_under(el2, offset=nil, limit_under=nil)
628
+ ar = (offset!=nil || limit_under!=nil) ? [el2, offset, limit_under] : [el2];
629
+ @identifiers << ElementStub.new(@browser, "aboveOrUnder", ar)
630
+ return self
631
+ end
632
+
633
+ def right_of(el2, offset=nil, limit_under=nil)
634
+ ar = (offset!=nil || limit_under!=nil) ? [el2, offset, limit_under] : [el2];
635
+ @identifiers << ElementStub.new(@browser, "rightOf", ar)
484
636
  return self
485
637
  end
486
638
 
639
+ def left_of(el2, offset=nil, limit_under=nil)
640
+ ar = (offset!=nil || limit_under!=nil) ? [el2, offset, limit_under] : [el2];
641
+ @identifiers << ElementStub.new(@browser, "leftOf", ar)
642
+ return self
643
+ end
644
+
645
+ def left_or_right_of(el2, offset=nil, limit_under=nil)
646
+ ar = (offset!=nil || limit_under!=nil) ? [el2, offset, limit_under] : [el2];
647
+ @identifiers << ElementStub.new(@browser, "leftOrRightOf", ar)
648
+ return self
649
+ end
487
650
 
488
651
  # specifies exacts coordinates to click inside an element. The coordinates are relative to the element. x is from left and y is from top. Can be negative to specify other direction
489
652
  # browser.button("Menu Button with Arrow on side").xy(-5, 10).click will click on the button, 5 pixels from right and 10 pixels from top.
@@ -556,6 +719,14 @@ module Sahi
556
719
  return "_sahi._#{@type}(#{concat_identifiers(@identifiers).join(", ") })"
557
720
  end
558
721
 
722
+ def to_type
723
+ return "_#{@type}"
724
+ end
725
+
726
+ def to_identifiers
727
+ return "#{concat_identifiers(@identifiers).join(", ") }"
728
+ end
729
+
559
730
  def concat_identifiers(ids)
560
731
  return ids.collect {|id| id.kind_of?(String) ? Utils.quoted(id) : (id.is_a?(ElementStub) ? id.to_s() : id.to_json())}
561
732
  end
@@ -24,15 +24,100 @@ class TC_MyTest < Test::Unit::TestCase
24
24
  assert_equal("_sahi._div(\"id1\", _sahi._near(_sahi._div(\"id2\")))", stub1.to_s())
25
25
  end
26
26
 
27
- def test_browser_multi_stubs()
28
- browser = Sahi::Browser.new("", "", "")
29
- assert_equal("_sahi._div(\"id\")", browser.div("id").to_s)
30
- assert_equal("_sahi._div(\"id\", \"id2\")", browser.div("id", "id2").to_s())
31
- assert_equal("_sahi._div(\"id1\", _sahi._near(_sahi._div(\"id2\")))", browser.div("id1").near(browser.div("id2")).to_s())
27
+ def test_browser_multi_stubs()
28
+ @b = Sahi::Browser.new("", "", "")
29
+ assert_equal("_sahi._div(\"id\")", @b.div("id").to_s)
30
+ assert_equal("_sahi._div(\"id\", \"id2\")", @b.div("id", "id2").to_s())
31
+ assert_equal("_sahi._div(\"id1\", _sahi._near(_sahi._div(\"id2\")))", @b.div("id1").near(@b.div("id2")).to_s())
32
32
  end
33
33
 
34
34
  def test_xy()
35
- browser = Sahi::Browser.new("", "", "")
36
- assert_equal("_sahi._xy(_sahi._div(\"id\"), 10, 20)", browser.div("id").xy(10, 20).to_s)
35
+ @b = Sahi::Browser.new("", "", "")
36
+ assert_equal("_sahi._xy(_sahi._div(\"id\"), 10, 20)", @b.div("id").xy(10, 20).to_s)
37
37
  end
38
+
39
+ def test_under_no_extra_params()
40
+ @b = Sahi::Browser.new("", "", "")
41
+ assert_equal("_sahi._cell(0, _sahi._under(_sahi._cell(\"Heading\")))", @b.cell(0).under(@b.cell("Heading")).to_s)
42
+ end
43
+
44
+ def test_right_of_no_extra_params()
45
+ @b = Sahi::Browser.new("", "", "")
46
+ assert_equal("_sahi._cell(0, _sahi._rightOf(_sahi._cell(\"Heading\")))", @b.cell(0).right_of(@b.cell("Heading")).to_s)
47
+ end
48
+
49
+ def test_left_of_no_extra_params()
50
+ @b = Sahi::Browser.new("", "", "")
51
+ assert_equal("_sahi._cell(0, _sahi._leftOf(_sahi._cell(\"Heading\")))", @b.cell(0).left_of(@b.cell("Heading")).to_s)
52
+ end
53
+
54
+ def test_left_or_right_of_no_extra_params()
55
+ @b = Sahi::Browser.new("", "", "")
56
+ assert_equal("_sahi._cell(0, _sahi._leftOrRightOf(_sahi._cell(\"Heading\")))", @b.cell(0).left_or_right_of(@b.cell("Heading")).to_s)
57
+ end
58
+
59
+ def test_above_no_extra_params()
60
+ @b = Sahi::Browser.new("", "", "")
61
+ assert_equal("_sahi._cell(0, _sahi._above(_sahi._cell(\"Heading\")))", @b.cell(0).above(@b.cell("Heading")).to_s)
62
+ end
63
+
64
+ def test_above_or_under_no_extra_params()
65
+ @b = Sahi::Browser.new("", "", "")
66
+ assert_equal("_sahi._cell(0, _sahi._aboveOrUnder(_sahi._cell(\"Heading\")))", @b.cell(0).above_or_under(@b.cell("Heading")).to_s)
67
+ end
68
+
69
+ def test_above_extra_params()
70
+ @b = Sahi::Browser.new("", "", "")
71
+ assert_equal("_sahi._cell(0, _sahi._above(_sahi._cell(\"Heading\"), [10,5], 20))", @b.cell(0).above(@b.cell("Heading"), [10,5], 20).to_s)
72
+ assert_equal("_sahi._cell(0, _sahi._above(_sahi._cell(\"Heading\"), 10, 20))", @b.cell(0).above(@b.cell("Heading"), 10, 20).to_s)
73
+ assert_equal("_sahi._cell(0, _sahi._above(_sahi._cell(\"Heading\"), 10, null))", @b.cell(0).above(@b.cell("Heading"), 10).to_s)
74
+ assert_equal("_sahi._cell(0, _sahi._above(_sahi._cell(\"Heading\"), null, 20))", @b.cell(0).above(@b.cell("Heading"), nil, 20).to_s)
75
+ assert_equal("_sahi._cell(0, _sahi._above(_sahi._cell(\"Heading\")))", @b.cell(0).above(@b.cell("Heading"), nil, nil).to_s)
76
+ end
77
+
78
+ def test_above_or_under_extra_params()
79
+ @b = Sahi::Browser.new("", "", "")
80
+ assert_equal("_sahi._cell(0, _sahi._aboveOrUnder(_sahi._cell(\"Heading\"), [10,5], 20))", @b.cell(0).above_or_under(@b.cell("Heading"), [10,5], 20).to_s)
81
+ assert_equal("_sahi._cell(0, _sahi._aboveOrUnder(_sahi._cell(\"Heading\"), 10, 20))", @b.cell(0).above_or_under(@b.cell("Heading"), 10, 20).to_s)
82
+ assert_equal("_sahi._cell(0, _sahi._aboveOrUnder(_sahi._cell(\"Heading\"), 10, null))", @b.cell(0).above_or_under(@b.cell("Heading"), 10).to_s)
83
+ assert_equal("_sahi._cell(0, _sahi._aboveOrUnder(_sahi._cell(\"Heading\"), null, 20))", @b.cell(0).above_or_under(@b.cell("Heading"), nil, 20).to_s)
84
+ assert_equal("_sahi._cell(0, _sahi._aboveOrUnder(_sahi._cell(\"Heading\")))", @b.cell(0).above_or_under(@b.cell("Heading"), nil, nil).to_s)
85
+ end
86
+
87
+ def test_under_extra_params()
88
+ @b = Sahi::Browser.new("", "", "")
89
+ assert_equal("_sahi._cell(0, _sahi._under(_sahi._cell(\"Heading\"), [10,5], 20))", @b.cell(0).under(@b.cell("Heading"), [10,5], 20).to_s)
90
+ assert_equal("_sahi._cell(0, _sahi._under(_sahi._cell(\"Heading\"), 10, 20))", @b.cell(0).under(@b.cell("Heading"), 10, 20).to_s)
91
+ assert_equal("_sahi._cell(0, _sahi._under(_sahi._cell(\"Heading\"), 10, null))", @b.cell(0).under(@b.cell("Heading"), 10).to_s)
92
+ assert_equal("_sahi._cell(0, _sahi._under(_sahi._cell(\"Heading\"), null, 20))", @b.cell(0).under(@b.cell("Heading"), nil, 20).to_s)
93
+ assert_equal("_sahi._cell(0, _sahi._under(_sahi._cell(\"Heading\")))", @b.cell(0).under(@b.cell("Heading"), nil, nil).to_s)
94
+ end
95
+
96
+ def test_left_of_extra_params()
97
+ @b = Sahi::Browser.new("", "", "")
98
+ assert_equal("_sahi._cell(0, _sahi._leftOf(_sahi._cell(\"Heading\"), [10,5], 20))", @b.cell(0).left_of(@b.cell("Heading"), [10,5], 20).to_s)
99
+ assert_equal("_sahi._cell(0, _sahi._leftOf(_sahi._cell(\"Heading\"), 10, 20))", @b.cell(0).left_of(@b.cell("Heading"), 10, 20).to_s)
100
+ assert_equal("_sahi._cell(0, _sahi._leftOf(_sahi._cell(\"Heading\"), 10, null))", @b.cell(0).left_of(@b.cell("Heading"), 10).to_s)
101
+ assert_equal("_sahi._cell(0, _sahi._leftOf(_sahi._cell(\"Heading\"), null, 20))", @b.cell(0).left_of(@b.cell("Heading"), nil, 20).to_s)
102
+ assert_equal("_sahi._cell(0, _sahi._leftOf(_sahi._cell(\"Heading\")))", @b.cell(0).left_of(@b.cell("Heading"), nil, nil).to_s)
103
+ end
104
+
105
+ def test_right_of_extra_params()
106
+ @b = Sahi::Browser.new("", "", "")
107
+ assert_equal("_sahi._cell(0, _sahi._rightOf(_sahi._cell(\"Heading\"), [10,5], 20))", @b.cell(0).right_of(@b.cell("Heading"), [10,5], 20).to_s)
108
+ assert_equal("_sahi._cell(0, _sahi._rightOf(_sahi._cell(\"Heading\"), 10, 20))", @b.cell(0).right_of(@b.cell("Heading"), 10, 20).to_s)
109
+ assert_equal("_sahi._cell(0, _sahi._rightOf(_sahi._cell(\"Heading\"), 10, null))", @b.cell(0).right_of(@b.cell("Heading"), 10).to_s)
110
+ assert_equal("_sahi._cell(0, _sahi._rightOf(_sahi._cell(\"Heading\"), null, 20))", @b.cell(0).right_of(@b.cell("Heading"), nil, 20).to_s)
111
+ assert_equal("_sahi._cell(0, _sahi._rightOf(_sahi._cell(\"Heading\")))", @b.cell(0).right_of(@b.cell("Heading"), nil, nil).to_s)
112
+ end
113
+
114
+ def test_left_or_right_of_extra_params()
115
+ @b = Sahi::Browser.new("", "", "")
116
+ assert_equal("_sahi._cell(0, _sahi._leftOrRightOf(_sahi._cell(\"Heading\"), [10,5], 20))", @b.cell(0).left_or_right_of(@b.cell("Heading"), [10,5], 20).to_s)
117
+ assert_equal("_sahi._cell(0, _sahi._leftOrRightOf(_sahi._cell(\"Heading\"), 10, 20))", @b.cell(0).left_or_right_of(@b.cell("Heading"), 10, 20).to_s)
118
+ assert_equal("_sahi._cell(0, _sahi._leftOrRightOf(_sahi._cell(\"Heading\"), 10, null))", @b.cell(0).left_or_right_of(@b.cell("Heading"), 10).to_s)
119
+ assert_equal("_sahi._cell(0, _sahi._leftOrRightOf(_sahi._cell(\"Heading\"), null, 20))", @b.cell(0).left_or_right_of(@b.cell("Heading"), nil, 20).to_s)
120
+ assert_equal("_sahi._cell(0, _sahi._leftOrRightOf(_sahi._cell(\"Heading\")))", @b.cell(0).left_or_right_of(@b.cell("Heading"), nil, nil).to_s)
121
+ end
122
+
38
123
  end
@@ -3,15 +3,16 @@ require 'sahi'
3
3
 
4
4
  class SahiDriverTest < Test::Unit::TestCase
5
5
  def setup
6
- @browser = init_browser()
7
- @browser.open
6
+ @b = init_browser()
7
+ @browser = @b
8
+ @b.open
8
9
  @base_url = "http://sahi.co.in"
9
10
  end
10
11
 
11
12
  def teardown
12
- if @browser
13
- @browser.set_speed = 100
14
- @browser.close
13
+ if @b
14
+ @b.set_speed = 100
15
+ @b.close
15
16
  sleep(1)
16
17
  end
17
18
  end
@@ -22,406 +23,454 @@ class SahiDriverTest < Test::Unit::TestCase
22
23
  return Sahi::Browser.new(@browser_name)
23
24
  end
24
25
 
25
-
26
26
  def test1
27
- @browser.navigate_to(@base_url + "/demo/formTest.htm")
28
- @browser.textbox("t1").value = "aaa"
29
- @browser.link("Back").click
30
- @browser.link("Table Test").click
31
- assert_equal("Cell with id", @browser.cell("CellWithId").text)
27
+ @b.navigate_to(@base_url + "/demo/formTest.htm")
28
+ @b.textbox("t1").value = "aaa"
29
+ @b.link("Back").click
30
+ @b.link("Table Test").click
31
+ assert_equal("Cell with id", @b.cell("CellWithId").text)
32
+ end
33
+
34
+ def test_file_upload_native_events
35
+ @b.navigate_to("http://sahi.co.in/demo/")
36
+ @b.link("File Upload Test").click
37
+ @b.wait(5) {@b.file("file").visible?}
38
+ @b.window_action("focus")
39
+ # focus on the element
40
+ @b.file("file").focus()
41
+ @b.wait(5)
42
+ @b.type_key_code_native(32)
43
+ @b.wait(7)
44
+ # type the file path
45
+ @b.type_native("D:\\abc.txt")
46
+ @b.wait(1)
47
+ # press enter
48
+ @b.type_key_code_native(10)
49
+ @b.wait(5)
50
+ @b.submit("Submit Single").click
51
+ assert(@b.span("abc.txt").exists?)
52
+ assert(@b.span("abc.txt").visible?)
53
+ end
54
+
55
+ def test_select_text_range()
56
+ @b.navigate_to("http://developer.yahoo.com/yui/examples/editor/icon_editor_clean.html")
57
+ @b.rte(1).select_text_range("his is some more[1]", "before")
58
+ @b.link("Insert Image").click
59
+
60
+ @b.navigate_to("http://developer.yahoo.com/yui/examples/editor/icon_editor_clean.html",true)
61
+ @b.rte(1).select_text_range("This is some more[3]", "before")
62
+ @b.link("Insert Image").click
63
+
64
+ @b.navigate_to("http://developer.yahoo.com/yui/examples/editor/icon_editor_clean.html",true)
65
+ @b.rte(1).select_text_range("This is some more[3]")
66
+ @b.link("Insert Image").click
32
67
  end
33
68
 
34
69
  def xtest_ZK
35
- @browser.speed = 200
36
- @browser.navigate_to("http://www.zkoss.org/zkdemo/userguide/")
37
- @browser.div("Hello World").click
38
- @browser.span("Pure Java").click
39
- @browser.div("Various Form").click
40
- @browser.wait(5000) {@browser.textbox("z-intbox[1]").visible?}
70
+ @b.speed = 200
71
+ @b.navigate_to("http://www.zkoss.org/zkdemo/userguide/")
72
+ @b.div("Hello World").click
73
+ @b.span("Pure Java").click
74
+ @b.div("Various Form").click
75
+ @b.wait(5000) {@b.textbox("z-intbox[1]").visible?}
41
76
 
42
- @browser.div("Comboboxes").click
43
- @browser.textbox("z-combobox-inp").value = "aa"
44
- @browser.italic("z-combobox-btn").click
45
- @browser.cell("Simple and Rich").click
77
+ @b.div("Comboboxes").click
78
+ @b.textbox("z-combobox-inp").value = "aa"
79
+ @b.italic("z-combobox-btn").click
80
+ @b.cell("Simple and Rich").click
46
81
 
47
- @browser.italic("z-combobox-btn[1]").click
48
- @browser.span("The coolest technology").click
49
- @browser.italic("z-combobox-btn[2]").click
50
- @browser.image("CogwheelEye-32x32.gif").click
51
- assert(@browser.textbox("z-combobox-inp[2]").exists?)
82
+ @b.italic("z-combobox-btn[1]").click
83
+ @b.span("The coolest technology").click
84
+ @b.italic("z-combobox-btn[2]").click
85
+ @b.image("CogwheelEye-32x32.gif").click
86
+ assert(@b.textbox("z-combobox-inp[2]").exists?)
52
87
  end
53
88
 
54
89
 
55
90
  def test_fetch()
56
- @browser.navigate_to(@base_url + "/demo/formTest.htm")
57
- assert_equal(@base_url + "/demo/formTest.htm", @browser.fetch("window.location.href"))
91
+ @b.navigate_to(@base_url + "/demo/formTest.htm")
92
+ assert_equal(@base_url + "/demo/formTest.htm", @b.fetch("window.location.href"))
58
93
  end
59
94
 
60
95
  def test_accessors()
61
- @browser.navigate_to(@base_url + "/demo/formTest.htm")
62
- assert_equal("", @browser.textbox("t1").value)
63
- assert(@browser.textbox(1).exists?)
64
- assert(@browser.textbox("$a_dollar").exists?)
65
- @browser.textbox("$a_dollar").value = ("adas")
66
- assert_equal("", @browser.textbox(1).value)
67
- assert(@browser.textarea("ta1").exists?)
68
- assert_equal("", @browser.textarea("ta1").value)
69
- assert(@browser.textarea(1).exists?)
70
- assert_equal("", @browser.textarea(1).value)
71
- assert(@browser.checkbox("c1").exists?)
72
- assert_equal("cv1", @browser.checkbox("c1").value)
73
- assert(@browser.checkbox(1).exists?)
74
- assert_equal("cv2", @browser.checkbox(1).value)
75
- assert(@browser.checkbox("c1[1]").exists?)
76
- assert_equal("cv3", @browser.checkbox("c1[1]").value)
77
- assert(@browser.checkbox(3).exists?)
78
- assert_equal("", @browser.checkbox(3).value)
79
- assert(@browser.radio("r1").exists?)
80
- assert_equal("rv1", @browser.radio("r1").value)
81
- assert(@browser.password("p1").exists?)
82
- assert_equal("", @browser.password("p1").value)
83
- assert(@browser.password(1).exists?)
84
- assert_equal("", @browser.password(1).value)
85
- assert(@browser.select("s1").exists?)
86
- assert_equal("o1", @browser.select("s1").selected_text())
87
- assert(@browser.select("s1Id[1]").exists?)
88
- assert_equal("o1", @browser.select("s1Id[1]").selected_text())
89
- assert(@browser.select(2).exists?)
90
- assert_equal("o1", @browser.select(2).selected_text())
91
- assert(@browser.button("button value").exists?)
92
- assert(@browser.button("btnName[1]").exists?)
93
- assert(@browser.button("btnId[2]").exists?)
94
- assert(@browser.button(3).exists?)
95
- assert(@browser.submit("Add").exists?)
96
- assert(@browser.submit("submitBtnName[1]").exists?)
97
- assert(@browser.submit("submitBtnId[2]").exists?)
98
- assert(@browser.submit(3).exists?)
99
- assert(@browser.image("imageAlt1").exists?)
100
- assert(@browser.image("imageId1[1]").exists?)
101
- assert(@browser.image(2).exists?)
102
- assert(!@browser.link("Back22").exists?)
103
- assert(@browser.link("Back").exists?)
104
- assert(@browser.accessor("document.getElementById('s1Id')").exists?)
96
+ @b.navigate_to(@base_url + "/demo/formTest.htm")
97
+ assert_equal("", @b.textbox("t1").value)
98
+ assert(@b.textbox(1).exists?)
99
+ assert(@b.textbox("$a_dollar").exists?)
100
+ @b.textbox("$a_dollar").value = ("adas")
101
+ assert_equal("", @b.textbox(1).value)
102
+ assert(@b.textarea("ta1").exists?)
103
+ assert_equal("", @b.textarea("ta1").value)
104
+ assert(@b.textarea(1).exists?)
105
+ assert_equal("", @b.textarea(1).value)
106
+ assert(@b.checkbox("c1").exists?)
107
+ assert_equal("cv1", @b.checkbox("c1").value)
108
+ assert(@b.checkbox(1).exists?)
109
+ assert_equal("cv2", @b.checkbox(1).value)
110
+ assert(@b.checkbox("c1[1]").exists?)
111
+ assert_equal("cv3", @b.checkbox("c1[1]").value)
112
+ assert(@b.checkbox(3).exists?)
113
+ assert_equal("", @b.checkbox(3).value)
114
+ assert(@b.radio("r1").exists?)
115
+ assert_equal("rv1", @b.radio("r1").value)
116
+ assert(@b.password("p1").exists?)
117
+ assert_equal("", @b.password("p1").value)
118
+ assert(@b.password(1).exists?)
119
+ assert_equal("", @b.password(1).value)
120
+ assert(@b.select("s1").exists?)
121
+ assert_equal("o1", @b.select("s1").selected_text())
122
+ assert(@b.select("s1Id[1]").exists?)
123
+ assert_equal("o1", @b.select("s1Id[1]").selected_text())
124
+ assert(@b.select(2).exists?)
125
+ assert_equal("o1", @b.select(2).selected_text())
126
+ assert(@b.button("button value").exists?)
127
+ assert(@b.button("btnName[1]").exists?)
128
+ assert(@b.button("btnId[2]").exists?)
129
+ assert(@b.button(3).exists?)
130
+ assert(@b.submit("Add").exists?)
131
+ assert(@b.submit("submitBtnName[1]").exists?)
132
+ assert(@b.submit("submitBtnId[2]").exists?)
133
+ assert(@b.submit(3).exists?)
134
+ assert(@b.image("imageAlt1").exists?)
135
+ assert(@b.image("imageId1[1]").exists?)
136
+ assert(@b.image(2).exists?)
137
+ assert(!@b.link("Back22").exists?)
138
+ assert(@b.link("Back").exists?)
139
+ assert(@b.accessor("document.getElementById('s1Id')").exists?)
105
140
  end
106
141
 
107
142
  def test_select()
108
- @browser.navigate_to(@base_url + "/demo/formTest.htm")
109
- assert_equal("o1", @browser.select("s1Id[1]").selected_text())
110
- @browser.select("s1Id[1]").choose("o2")
111
- assert_equal("o2", @browser.select("s1Id[1]").selected_text())
112
- @browser.select(3).choose(["o1", "o3"])
113
- assert_equal("o1,o3", @browser.select(3).selected_text())
143
+ @b.navigate_to(@base_url + "/demo/formTest.htm")
144
+ assert_equal("o1", @b.select("s1Id[1]").selected_text())
145
+ @b.select("s1Id[1]").choose("o2")
146
+ assert_equal("o2", @b.select("s1Id[1]").selected_text())
147
+ @b.select(3).choose(["o1", "o3"])
148
+ assert_equal("o1,o3", @b.select(3).selected_text())
114
149
  end
115
150
 
116
151
  def test_set_file()
117
- @browser.navigate_to(@base_url + "/demo/php/fileUpload.htm")
118
- @browser.file("file").file = "scripts/demo/uploadme.txt";
119
- @browser.submit("Submit Single").click;
120
- assert(@browser.span("size").exists?)
121
- assert_not_nil(@browser.span("size").text().index("0.3046875 Kb"))
122
- assert_not_nil(@browser.span("type").text().index("Single"))
123
- @browser.link("Back to form").click;
152
+ @b.navigate_to(@base_url + "/demo/php/fileUpload.htm")
153
+ @b.file("file").file = "scripts/demo/uploadme.txt";
154
+ @b.submit("Submit Single").click;
155
+ assert(@b.span("size").exists?)
156
+ assert_not_nil(@b.span("size").text().index("0.3046875 Kb"))
157
+ assert_not_nil(@b.span("type").text().index("Single"))
158
+ @b.link("Back to form").click;
124
159
  end
125
160
 
126
161
  def test_multi_file_upload()
127
- @browser.navigate_to(@base_url + "/demo/php/fileUpload.htm")
128
- @browser.file("file[]").file = "scripts/demo/uploadme.txt";
129
- @browser.file("file[]").file = "scripts/demo/uploadme2.txt";
130
- @browser.submit("Submit Array").click;
131
- assert_not_nil(@browser.span("type").text().index("Array"))
132
- assert_not_nil(@browser.span("file").text().index("uploadme.txt"))
133
- assert_not_nil(@browser.span("size").text().index("0.3046875 Kb"))
162
+ @b.navigate_to(@base_url + "/demo/php/fileUpload.htm")
163
+ @b.file("file[]").file = "scripts/demo/uploadme.txt";
164
+ @b.file("file[]").file = "scripts/demo/uploadme2.txt";
165
+ @b.submit("Submit Array").click;
166
+ assert_not_nil(@b.span("type").text().index("Array"))
167
+ assert_not_nil(@b.span("file").text().index("uploadme.txt"))
168
+ assert_not_nil(@b.span("size").text().index("0.3046875 Kb"))
134
169
 
135
- assert_not_nil(@browser.span("file[1]").text().index("uploadme2.txt"))
136
- assert_not_nil(@browser.span("size[1]").text().index("0.32421875 Kb"))
170
+ assert_not_nil(@b.span("file[1]").text().index("uploadme2.txt"))
171
+ assert_not_nil(@b.span("size[1]").text().index("0.32421875 Kb"))
137
172
  end
138
173
 
139
174
  def test_clicks()
140
- @browser.navigate_to(@base_url + "/demo/formTest.htm")
141
- assert_not_nil(@browser.checkbox("c1"))
142
- @browser.checkbox("c1").click;
143
- assert_equal("true", @browser.checkbox("c1").fetch("checked"))
144
- @browser.checkbox("c1").click;
145
- assert_equal("false", @browser.checkbox("c1").fetch("checked"))
175
+ @b.navigate_to(@base_url + "/demo/formTest.htm")
176
+ assert_not_nil(@b.checkbox("c1"))
177
+ @b.checkbox("c1").click;
178
+ assert_equal("true", @b.checkbox("c1").fetch("checked"))
179
+ @b.checkbox("c1").click;
180
+ assert_equal("false", @b.checkbox("c1").fetch("checked"))
146
181
 
147
- assert_not_nil(@browser.radio("r1"))
148
- @browser.radio("r1").click;
149
- assert_equal("true", @browser.radio("r1").fetch("checked"))
150
- assert(@browser.radio("r1").checked?)
151
- assert(!@browser.radio("r1[1]").checked?)
152
- @browser.radio("r1[1]").click;
153
- assert_equal("false", @browser.radio("r1").fetch("checked"))
154
- assert(@browser.radio("r1[1]").checked?)
155
- assert(!@browser.radio("r1").checked?)
182
+ assert_not_nil(@b.radio("r1"))
183
+ @b.radio("r1").click;
184
+ assert_equal("true", @b.radio("r1").fetch("checked"))
185
+ assert(@b.radio("r1").checked?)
186
+ assert(!@b.radio("r1[1]").checked?)
187
+ @b.radio("r1[1]").click;
188
+ assert_equal("false", @b.radio("r1").fetch("checked"))
189
+ assert(@b.radio("r1[1]").checked?)
190
+ assert(!@b.radio("r1").checked?)
156
191
  end
157
192
 
158
193
  def test_links()
159
- @browser.navigate_to(@base_url + "/demo/index.htm")
160
- @browser.link("Link Test").click;
161
- @browser.link("linkByContent").click;
162
- @browser.link("Back").click;
163
- @browser.link("link with return true").click;
164
- assert(@browser.textarea("ta1").exists?)
165
- assert_equal("", @browser.textarea("ta1").value)
166
- @browser.link("Back").click;
167
- @browser.link("Link Test").click;
168
- @browser.link("link with return false").click;
169
- assert(@browser.textbox("t1").exists?)
170
- assert_equal("formTest link with return false", @browser.textbox("t1").value)
171
- assert(@browser.link("linkByContent").exists?)
194
+ @b.navigate_to(@base_url + "/demo/index.htm")
195
+ @b.link("Link Test").click;
196
+ @b.link("linkByContent").click;
197
+ @b.link("Back").click;
198
+ @b.link("link with return true").click;
199
+ assert(@b.textarea("ta1").exists?)
200
+ assert_equal("", @b.textarea("ta1").value)
201
+ @b.link("Back").click;
202
+ @b.link("Link Test").click;
203
+ @b.link("link with return false").click;
204
+ assert(@b.textbox("t1").exists?)
205
+ assert_equal("formTest link with return false", @b.textbox("t1").value)
206
+ assert(@b.link("linkByContent").exists?)
172
207
 
173
- @browser.link("link with returnValue=false").click;
174
- assert(@browser.textbox("t1").exists?)
175
- assert_equal("formTest link with returnValue=false", @browser.textbox("t1").value)
176
- @browser.link("added handler using js").click;
177
- assert(@browser.textbox("t1").exists?)
178
- assert_equal("myFn called", @browser.textbox("t1").value)
179
- @browser.textbox("t1").value = ("")
180
- @browser.image("imgWithLink").click;
181
- @browser.link("Link Test").click;
182
- @browser.image("imgWithLinkNoClick").click;
183
- assert(@browser.textbox("t1").exists?)
184
- assert_equal("myFn called", @browser.textbox("t1").value)
185
- @browser.link("Back").click;
208
+ @b.link("link with returnValue=false").click;
209
+ assert(@b.textbox("t1").exists?)
210
+ assert_equal("formTest link with returnValue=false", @b.textbox("t1").value)
211
+ @b.link("added handler using js").click;
212
+ assert(@b.textbox("t1").exists?)
213
+ assert_equal("myFn called", @b.textbox("t1").value)
214
+ @b.textbox("t1").value = ("")
215
+ @b.image("imgWithLink").click;
216
+ @b.link("Link Test").click;
217
+ @b.image("imgWithLinkNoClick").click;
218
+ assert(@b.textbox("t1").exists?)
219
+ assert_equal("myFn called", @b.textbox("t1").value)
220
+ @b.link("Back").click;
186
221
  end
187
222
 
188
223
 
189
224
  def test_popup_title_name_mix()
190
- @browser.navigate_to(@base_url + "/demo/index.htm")
191
- @browser.link("Window Open Test").click;
192
- @browser.link("Window Open Test With Title").click;
193
- @browser.link("Table Test").click;
225
+ @b.navigate_to(@base_url + "/demo/index.htm")
226
+ @b.link("Window Open Test").click;
227
+ @b.link("Window Open Test With Title").click;
228
+ @b.link("Table Test").click;
194
229
 
195
- popup_popwin = @browser.popup("popWin")
230
+ popup_popwin = @b.popup("popWin")
196
231
 
197
232
  popup_popwin.link("Link Test").click;
198
- @browser.link("Back").click;
233
+ @b.link("Back").click;
199
234
 
200
- popup_with_title = @browser.popup("With Title")
235
+ popup_with_title = @b.popup("With Title")
201
236
 
202
237
  popup_with_title.link("Form Test").click;
203
- @browser.link("Table Test").click;
238
+ @b.link("Table Test").click;
204
239
  popup_with_title.textbox("t1").value = ("d")
205
- @browser.link("Back").click;
240
+ @b.link("Back").click;
206
241
  popup_with_title.textbox(1).value = ("e")
207
- @browser.link("Table Test").click;
242
+ @b.link("Table Test").click;
208
243
  popup_with_title.textbox("name").value = ("f")
209
244
  assert_not_nil(popup_popwin.link("linkByHtml").exists?)
210
245
 
211
- assert_not_nil(@browser.cell("CellWithId"))
212
- assert_equal("Cell with id", @browser.cell("CellWithId").text)
246
+ assert_not_nil(@b.cell("CellWithId"))
247
+ assert_equal("Cell with id", @b.cell("CellWithId").text)
213
248
  popup_with_title.link("Break Frames").click;
214
249
 
215
- popupSahiTests = @browser.popup("Sahi Tests")
250
+ popupSahiTests = @b.popup("Sahi Tests")
216
251
  popupSahiTests.close()
217
252
 
218
253
  popup_popwin.link("Break Frames").click;
219
254
  popup_popwin.close()
220
- @browser.link("Back").click;
255
+ @b.link("Back").click;
221
256
  end
222
257
 
223
258
 
224
259
  def test_in()
225
- @browser.navigate_to(@base_url + "/demo/tableTest.htm")
226
- assert_equal("111", @browser.textarea("ta").near(@browser.cell("a1")).value)
227
- assert_equal("222", @browser.textarea("ta").near(@browser.cell("a2")).value)
228
- assert_equal("3", @browser.table(0).fetch("rows.length"))
229
- @browser.link("Go back").in(@browser.cell("a1").parent_node()).click;
230
- assert(@browser.link("Link Test").exists?)
260
+ @b.navigate_to(@base_url + "/demo/tableTest.htm")
261
+ assert_equal("111", @b.textarea("ta").near(@b.cell("a1")).value)
262
+ assert_equal("222", @b.textarea("ta").near(@b.cell("a2")).value)
263
+ assert_equal("3", @b.table(0).fetch("rows.length"))
264
+ @b.link("Go back").in(@b.cell("a1").parent_node()).click;
265
+ assert(@b.link("Link Test").exists?)
231
266
  end
232
267
 
233
268
  def test_under()
234
- @browser.navigate_to(@base_url + "/demo/tableTest.htm")
235
- assert_equal("x1-2", @browser.cell(0).near(@browser.cell("x1-0")).under(@browser.tableHeader("header 3")).text());
236
- assert_equal("x1-3", @browser.cell(0).near(@browser.cell("x1-0")).under(@browser.tableHeader("header 4")).text());
269
+ @b.navigate_to(@base_url + "/demo/tableTest.htm")
270
+ assert_equal("x1-2", @b.cell(0).near(@b.cell("x1-0")).under(@b.tableHeader("header 3")).text())
271
+ assert_equal("x1-3", @b.cell(0).near(@b.cell("x1-0")).under(@b.tableHeader("header 4")).text())
237
272
  end
238
273
 
239
274
  def test_exists()
240
- @browser.navigate_to(@base_url + "/demo/index.htm")
241
- assert(@browser.link("Link Test").exists?)
242
- assert(!@browser.link("Link Test NonExistent").exists?)
243
- end
275
+ @b.navigate_to(@base_url + "/demo/index.htm")
276
+ assert(@b.link("Link Test").exists?)
277
+ assert(!@b.link("Link Test NonExistent").exists?)
278
+ end
279
+
280
+ def test_range()
281
+ @b.navigate_to(@base_url + "/demo/")
282
+ @b.link("Form Test").click
283
+ @b.textarea("ta1").value = "abcdefgh";
284
+ @b.textarea("ta1").select_range(2,4)
285
+ assert_equal("cd", @b.selection_text())
286
+ @b.navigate_to(@base_url + "/demo/", true)
287
+ @b.link("IFrames Test").click
288
+ @b.link("Form Test").click
289
+ @b.textarea("ta1").value = "abcdefgh"
290
+ @b.textarea("ta1").select_range(2, 4)
291
+ assert_equal("cd", @b.selection_text())
292
+ end
244
293
 
245
294
  def alert1(message)
246
- @browser.navigate_to(@base_url + "/demo/alertTest.htm")
247
- @browser.textbox("t1").value = ("Message " + message)
248
- @browser.button("Click For Alert").click;
249
- @browser.navigate_to("/demo/alertTest.htm")
295
+ @b.navigate_to(@base_url + "/demo/alertTest.htm")
296
+ @b.textbox("t1").value = ("Message " + message)
297
+ @b.button("Click For Alert").click;
298
+ @b.navigate_to("/demo/alertTest.htm")
250
299
  sleep(1)
251
- assert_equal("Message " + message, @browser.last_alert())
252
- @browser.clear_last_alert()
253
- assert_nil(@browser.last_alert())
300
+ assert_equal("Message " + message, @b.last_alert())
301
+ @b.clear_last_alert()
302
+ assert_nil(@b.last_alert())
254
303
  end
255
304
 
256
305
  def test_alert()
257
306
  alert1("One")
258
307
  alert1("Two")
259
308
  alert1("Three")
260
- @browser.button("Click For Multiline Alert").click;
261
- 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())
309
+ @b.button("Click For Multiline Alert").click;
310
+ 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", @b.last_alert())
262
311
  end
263
312
 
264
313
  def test_confirm()
265
- @browser.navigate_to(@base_url + "/demo/confirmTest.htm")
266
- @browser.expect_confirm("Some question?", true)
267
- @browser.button("Click For Confirm").click;
268
- assert_equal("oked", @browser.textbox("t1").value)
269
- @browser.navigate_to("/demo/confirmTest.htm")
314
+ @b.navigate_to(@base_url + "/demo/confirmTest.htm")
315
+ @b.expect_confirm("Some question?", true)
316
+ @b.button("Click For Confirm").click;
317
+ assert_equal("oked", @b.textbox("t1").value)
318
+ @b.navigate_to("/demo/confirmTest.htm")
270
319
  sleep(1)
271
- assert_equal("Some question?", @browser.last_confirm())
272
- @browser.clear_last_confirm()
273
- assert_nil(@browser.last_confirm())
320
+ assert_equal("Some question?", @b.last_confirm())
321
+ @b.clear_last_confirm()
322
+ assert_nil(@b.last_confirm())
274
323
 
275
- @browser.expect_confirm("Some question?", false)
276
- @browser.button("Click For Confirm").click;
277
- assert_equal("canceled", @browser.textbox("t1").value)
278
- assert_equal("Some question?", @browser.last_confirm())
279
- @browser.clear_last_confirm()
280
- assert_nil(@browser.last_confirm())
324
+ @b.expect_confirm("Some question?", false)
325
+ @b.button("Click For Confirm").click;
326
+ assert_equal("canceled", @b.textbox("t1").value)
327
+ assert_equal("Some question?", @b.last_confirm())
328
+ @b.clear_last_confirm()
329
+ assert_nil(@b.last_confirm())
281
330
 
282
- @browser.expect_confirm("Some question?", true)
283
- @browser.button("Click For Confirm").click;
284
- assert_equal("oked", @browser.textbox("t1").value)
285
- assert_equal("Some question?", @browser.last_confirm())
286
- @browser.clear_last_confirm()
287
- assert_nil(@browser.last_confirm())
331
+ @b.expect_confirm("Some question?", true)
332
+ @b.button("Click For Confirm").click;
333
+ assert_equal("oked", @b.textbox("t1").value)
334
+ assert_equal("Some question?", @b.last_confirm())
335
+ @b.clear_last_confirm()
336
+ assert_nil(@b.last_confirm())
288
337
  end
289
338
 
290
339
  def test_prompt()
291
- @browser.navigate_to(@base_url + "/demo/promptTest.htm")
292
- @browser.expect_prompt("Some prompt?", "abc")
293
- @browser.button("Click For Prompt").click;
294
- assert_not_nil(@browser.textbox("t1"))
295
- assert_equal("abc", @browser.textbox("t1").value)
296
- @browser.navigate_to("/demo/promptTest.htm")
297
- @browser.waitFor(2000)
298
- assert_equal("Some prompt?", @browser.last_prompt())
299
- @browser.clear_last_prompt()
300
- assert_nil(@browser.last_prompt())
340
+ @b.navigate_to(@base_url + "/demo/promptTest.htm")
341
+ @b.expect_prompt("Some prompt?", "abc")
342
+ @b.button("Click For Prompt").click;
343
+ assert_not_nil(@b.textbox("t1"))
344
+ assert_equal("abc", @b.textbox("t1").value)
345
+ @b.navigate_to("/demo/promptTest.htm")
346
+ @b.wait(2000)
347
+ assert_equal("Some prompt?", @b.last_prompt())
348
+ @b.clear_last_prompt()
349
+ assert_nil(@b.last_prompt())
301
350
  end
302
351
 
303
352
 
304
353
  def test_visible
305
- @browser.navigate_to(@base_url + "/demo/index.htm")
306
- @browser.link("Visible Test").click;
307
- assert(@browser.spandiv("using display").visible?)
354
+ @b.navigate_to(@base_url + "/demo/index.htm")
355
+ @b.link("Visible Test").click;
356
+ assert(@b.spandiv("using display").visible?)
308
357
 
309
- @browser.button("Display none").click;
310
- assert(!@browser.spandiv("using display").visible?)
311
- @browser.button("Display block").click;
312
- assert(@browser.spandiv("using display").visible?)
358
+ @b.button("Display none").click;
359
+ assert(!@b.spandiv("using display").visible?)
360
+ @b.button("Display block").click;
361
+ assert(@b.spandiv("using display").visible?)
313
362
 
314
- @browser.button("Display none").click;
315
- assert(!@browser.spandiv("using display").visible?)
316
- @browser.button("Display inline").click;
317
- assert(@browser.spandiv("using display").visible?)
363
+ @b.button("Display none").click;
364
+ assert(!@b.spandiv("using display").visible?)
365
+ @b.button("Display inline").click;
366
+ assert(@b.spandiv("using display").visible?)
318
367
 
319
- assert(@browser.spandiv("using visibility").visible?)
320
- @browser.button("Visibility hidden").click;
321
- assert(!@browser.spandiv("using visibility").visible?)
322
- @browser.button("Visibility visible").click;
323
- assert(@browser.spandiv("using visibility").visible?)
368
+ assert(@b.spandiv("using visibility").visible?)
369
+ @b.button("Visibility hidden").click;
370
+ assert(!@b.spandiv("using visibility").visible?)
371
+ @b.button("Visibility visible").click;
372
+ assert(@b.spandiv("using visibility").visible?)
324
373
 
325
- assert(!@browser.byId("nestedBlockInNone").visible?)
326
- assert(!@browser.byId("absoluteNestedBlockInNone").visible?)
374
+ assert(!@b.byId("nestedBlockInNone").visible?)
375
+ assert(!@b.byId("absoluteNestedBlockInNone").visible?)
327
376
  end
328
377
 
329
378
  def test_check()
330
- @browser.navigate_to(@base_url + "/demo/")
331
- @browser.link("Form Test").click;
332
- assert_equal("false", @browser.checkbox("c1").fetch("checked"))
333
- assert(!@browser.checkbox("c1").checked?)
334
- @browser.checkbox("c1").check()
335
- assert_equal("true", @browser.checkbox("c1").fetch("checked"))
336
- assert(@browser.checkbox("c1").checked?)
337
- @browser.checkbox("c1").check()
338
- assert_equal("true", @browser.checkbox("c1").fetch("checked"))
339
- @browser.checkbox("c1").uncheck()
340
- assert_equal("false", @browser.checkbox("c1").fetch("checked"))
341
- @browser.checkbox("c1").uncheck()
342
- assert_equal("false", @browser.checkbox("c1").fetch("checked"))
343
- @browser.checkbox("c1").click;
344
- assert_equal("true", @browser.checkbox("c1").fetch("checked"))
379
+ @b.navigate_to(@base_url + "/demo/")
380
+ @b.link("Form Test").click;
381
+ assert_equal("false", @b.checkbox("c1").fetch("checked"))
382
+ assert(!@b.checkbox("c1").checked?)
383
+ @b.checkbox("c1").check()
384
+ assert_equal("true", @b.checkbox("c1").fetch("checked"))
385
+ assert(@b.checkbox("c1").checked?)
386
+ @b.checkbox("c1").check()
387
+ assert_equal("true", @b.checkbox("c1").fetch("checked"))
388
+ @b.checkbox("c1").uncheck()
389
+ assert_equal("false", @b.checkbox("c1").fetch("checked"))
390
+ @b.checkbox("c1").uncheck()
391
+ assert_equal("false", @b.checkbox("c1").fetch("checked"))
392
+ @b.checkbox("c1").click;
393
+ assert_equal("true", @b.checkbox("c1").fetch("checked"))
345
394
  end
346
395
 
347
396
  def test_focus()
348
- @browser.navigate_to(@base_url + "/demo/focusTest.htm")
349
- @browser.textbox("t2").focus()
350
- assert_equal("focused", @browser.textbox("t1").value)
351
- @browser.textbox("t2").remove_focus()
352
- assert_equal("not focused", @browser.textbox("t1").value)
353
- @browser.textbox("t2").focus()
354
- assert_equal("focused", @browser.textbox("t1").value)
397
+ @b.navigate_to(@base_url + "/demo/focusTest.htm")
398
+ @b.textbox("t2").focus()
399
+ assert_equal("focused", @b.textbox("t1").value)
400
+ @b.textbox("t2").remove_focus()
401
+ assert_equal("not focused", @b.textbox("t1").value)
402
+ @b.textbox("t2").focus()
403
+ assert_equal("focused", @b.textbox("t1").value)
355
404
  end
356
405
 
357
406
  def test_title()
358
- @browser.navigate_to(@base_url + "/demo/index.htm")
359
- assert_equal("Sahi Tests", @browser.title)
360
- @browser.link("Form Test").click;
361
- assert_equal("Form Test", @browser.title)
362
- @browser.link("Back").click;
363
- @browser.link("Window Open Test With Title").click;
364
- assert_equal("With Title", @browser.popup("With Title").title)
407
+ @b.navigate_to(@base_url + "/demo/index.htm")
408
+ assert_equal("Sahi Tests", @b.title)
409
+ @b.link("Form Test").click;
410
+ assert_equal("Form Test", @b.title)
411
+ @b.link("Back").click;
412
+ @b.link("Window Open Test With Title").click;
413
+ assert_equal("With Title", @b.popup("With Title").title)
365
414
  end
366
415
 
367
416
  def test_area()
368
- @browser.navigate_to(@base_url + "/demo/map.htm")
369
- @browser.navigate_to("map.htm")
370
- assert(@browser.area("Record").exists?)
371
- assert(@browser.area("Playback").exists?)
372
- assert(@browser.area("Info").exists?)
373
- assert(@browser.area("Circular").exists?)
374
- @browser.area("Record").mouse_over()
375
- assert_equal("Record", @browser.div("output").text)
376
- @browser.button("Clear").mouse_over()
377
- assert_equal("", @browser.div("output").text)
378
- @browser.area("Record").click;
379
- assert(@browser.link("linkByContent").exists?)
380
- #@browser.navigate_to("map.htm")
417
+ @b.navigate_to(@base_url + "/demo/map.htm")
418
+ @b.navigate_to("map.htm")
419
+ assert(@b.area("Record").exists?)
420
+ assert(@b.area("Playback").exists?)
421
+ assert(@b.area("Info").exists?)
422
+ assert(@b.area("Circular").exists?)
423
+ @b.area("Record").mouse_over()
424
+ assert_equal("Record", @b.div("output").text)
425
+ @b.button("Clear").mouse_over()
426
+ assert_equal("", @b.div("output").text)
427
+ @b.area("Record").click;
428
+ assert(@b.link("linkByContent").exists?)
429
+ #@b.navigate_to("map.htm")
381
430
  end
382
431
 
383
432
  def test_dragdrop()
384
- @browser.navigate_to("http://www.snook.ca/technical/mootoolsdragdrop/")
385
- @browser.div("Drag me").drag_and_drop_on(@browser.xy(@browser.div("Item 2"), 5, 5))
386
- assert @browser.div("dropped").exists?
387
- assert @browser.div("Item 1").exists?
388
- assert @browser.div("Item 3").exists?
389
- assert @browser.div("Item 4").exists?
433
+ @b.navigate_to("http://www.snook.ca/technical/mootoolsdragdrop/")
434
+ @b.div("Drag me").drag_and_drop_on(@b.xy(@b.div("Item 2"), 5, 5))
435
+ assert @b.div("dropped").exists?
436
+ assert @b.div("Item 1").exists?
437
+ assert @b.div("Item 3").exists?
438
+ assert @b.div("Item 4").exists?
390
439
  end
391
440
 
392
441
  def test_wait()
393
- @browser.navigate_to(@base_url + "/demo/waitCondition1.htm")
394
- @browser.wait(15) {"populated" == @browser.textbox("t1").value}
395
- assert_equal("populated", @browser.textbox("t1").value)
442
+ @b.navigate_to(@base_url + "/demo/waitCondition1.htm")
443
+ @b.wait(15) {"populated" == @b.textbox("t1").value}
444
+ assert_equal("populated", @b.textbox("t1").value)
396
445
  end
397
446
 
398
447
  def test_google()
399
- @browser.navigate_to("http://www.google.com")
400
- @browser.textbox("q").value = "sahi forums"
401
- @browser.submit("Google Search").click
402
- @browser.link("Sign In").click
403
- assert @browser.textbox("Form/Email").visible?
448
+ @b.navigate_to("http://www.google.com")
449
+ @b.textbox("q").value = "sahi forums"
450
+ @b.submit("Google Search").click
451
+ @b.link("Sign In").click
452
+ assert @b.textbox("Form/Email").visible?
404
453
  end
405
454
 
406
455
  def test_dblclick()
407
- @browser.navigate_to("#{@base_url}/demo/clicks.htm")
408
- @browser.div("dbl click me").dblclick
409
- assert_equal("[DOUBLE_CLICK]", @browser.textarea("t2").value)
410
- @browser.button("Clear").click
456
+ @b.navigate_to("#{@base_url}/demo/clicks.htm")
457
+ @b.div("dbl click me").dblclick
458
+ assert_equal("[DOUBLE_CLICK]", @b.textarea("t2").value)
459
+ @b.button("Clear").click
411
460
  end
412
461
 
413
462
  def test_right_click()
414
- @browser.navigate_to("#{@base_url}/demo/clicks.htm")
415
- @browser.div("right click me").right_click
416
- assert_equal("[RIGHT_CLICK]", @browser.textarea("t2").value)
417
- @browser.button("Clear").click
463
+ @b.navigate_to("#{@base_url}/demo/clicks.htm")
464
+ @b.div("right click me").right_click
465
+ assert_equal("[RIGHT_CLICK]", @b.textarea("t2").value)
466
+ @b.button("Clear").click
418
467
  end
419
468
 
420
469
  def test_different_domains()
421
- @browser.navigate_to("#{@base_url}/demo/")
422
- @browser.link("Different Domains External").click
423
- domain_tyto = @browser.domain("www.tytosoftware.com")
424
- domain_bing = @browser.domain("www.bing.com")
470
+ @b.navigate_to("#{@base_url}/demo/")
471
+ @b.link("Different Domains External").click
472
+ domain_tyto = @b.domain("www.tytosoftware.com")
473
+ domain_bing = @b.domain("www.bing.com")
425
474
 
426
475
  domain_tyto.link("Link Test").click
427
476
  domain_bing.textbox("q").value = "fdsfsd"
@@ -429,79 +478,139 @@ class SahiDriverTest < Test::Unit::TestCase
429
478
  domain_tyto.link("Back").click
430
479
  domain_bing.div("bgDiv").click
431
480
 
432
- @browser.navigate_to("#{@base_url}/demo/");
481
+ @b.navigate_to("#{@base_url}/demo/");
433
482
  end
434
483
 
435
484
  def test_browser_types()
436
- @browser.navigate_to("#{@base_url}/demo/")
485
+ @b.navigate_to("#{@base_url}/demo/")
437
486
  if (@browser_name == "firefox")
438
- assert(!@browser.ie?())
439
- assert(@browser.firefox?())
487
+ assert(!@b.ie?())
488
+ assert(@b.firefox?())
440
489
  elsif (@browser_name == "ie")
441
- assert(@browser.ie?())
442
- assert(!@browser.firefox?())
490
+ assert(@b.ie?())
491
+ assert(!@b.firefox?())
443
492
  end
444
493
  end
445
494
 
446
495
  def test_browser_js()
447
- @browser.browser_js = "function giveMyNumber(){return '23';}"
448
- @browser.navigate_to("#{@base_url}/demo/")
449
- assert_equal("23", @browser.fetch("giveMyNumber()"))
450
- @browser.link("Link Test").click()
451
- assert_equal("23", @browser.fetch("giveMyNumber()"))
452
- @browser.link("Back").click()
496
+ @b.browser_js = "function giveMyNumber(){return '23';}"
497
+ @b.navigate_to("#{@base_url}/demo/")
498
+ assert_equal("23", @b.fetch("giveMyNumber()"))
499
+ @b.link("Link Test").click()
500
+ assert_equal("23", @b.fetch("giveMyNumber()"))
501
+ @b.link("Back").click()
453
502
  end
454
503
 
455
504
  def test_count()
456
- @browser.navigate_to("#{@base_url}/demo/count.htm")
457
- assert_equal(4, @browser.link("group 0 link").count_similar())
458
- assert_equal(0, @browser.link("group non existent link").count_similar());
459
- assert_equal(5, @browser.link("/group 1/").count_similar());
460
- assert_equal(2, @browser.link("/group 1/").in(@browser.div("div1")).count_similar());
505
+ @b.navigate_to("#{@base_url}/demo/count.htm")
506
+ assert_equal(4, @b.link("group 0 link").count_similar())
507
+ assert_equal(0, @b.link("group non existent link").count_similar());
508
+ assert_equal(5, @b.link("/group 1/").count_similar());
509
+ assert_equal(2, @b.link("/group 1/").in(@b.div("div1")).count_similar());
461
510
  end
462
511
 
463
512
  def test_collect()
464
- @browser.navigate_to("#{@base_url}/demo/count.htm")
465
- els = @browser.link("/group 1/").collect_similar();
513
+ @b.navigate_to("#{@base_url}/demo/count.htm")
514
+ elsAttr = @b.collect(@b.link("/group 1/").in(@b.div("div1")), "sahiText");
515
+ assert_equal(2, elsAttr.size());
516
+ assert_equal("group 1 link3", elsAttr[0]);
517
+ assert_equal("group 1 link4", elsAttr[1]);
518
+
519
+ elsAttr2 = @b.collect(@b.link("/group 1/").in(@b.div("div1")));
520
+ assert_equal(2, elsAttr.size());
521
+ assert_equal("group 1 link3", elsAttr2[0].text);
522
+ assert_equal("group 1 link4", elsAttr2[1].text);
523
+
524
+ els = @b.link("/group 1/").collect_similar();
466
525
  assert_equal(5, els.size());
467
526
  assert_equal("group 1 link1", els[0].text);
468
527
  assert_equal("group 1 link2", els[1].text);
469
528
 
470
- @browser.navigate_to("#{@base_url}/demo/count.htm")
471
- els2 = @browser.link("/group 1/").in(@browser.div("div1")).collect_similar();
529
+ @b.navigate_to("#{@base_url}/demo/count.htm")
530
+ els2 = @b.link("/group 1/").in(@b.div("div1")).collect_similar();
472
531
  assert_equal(2, els2.size());
473
532
  assert_equal("group 1 link3", els2[0].text);
474
533
  assert_equal("group 1 link4", els2[1].text);
475
534
  end
476
535
 
477
536
  def test_strict_visible()
478
- @browser.navigate_to("#{@base_url}/demo/strict_visible.htm")
479
- assert_equal("b", @browser.textbox("q[1]").value)
480
- @browser.strict_visibility_check = true
481
- assert_equal("c", @browser.textbox("q[1]").value)
482
- @browser.strict_visibility_check = false
483
- assert_equal("b", @browser.textbox("q[1]").value)
537
+ @b.navigate_to("#{@base_url}/demo/strict_visible.htm")
538
+ assert_equal("b", @b.textbox("q[1]").value)
539
+ @b.strict_visibility_check = true
540
+ assert_equal("c", @b.textbox("q[1]").value)
541
+ @b.strict_visibility_check = false
542
+ assert_equal("b", @b.textbox("q[1]").value)
484
543
  end
485
544
 
486
545
  def test_active_element()
487
- @browser.navigate_to("#{@base_url}/demo/training/login.htm")
488
- @browser.textbox("user").focus()
489
- assert_equal("user", @browser.activeElement().fetch("name"))
490
- @browser.password("password").focus()
491
- assert_equal("password", @browser.activeElement().fetch("name"))
546
+ @b.navigate_to("#{@base_url}/demo/training/login.htm")
547
+ @b.textbox("user").focus()
548
+ assert_equal("user", @b.activeElement().fetch("name"))
549
+ @b.password("password").focus()
550
+ assert_equal("password", @b.activeElement().fetch("name"))
492
551
  end
493
552
 
494
553
  def test_identify_by_multiple_attributes()
495
- @browser.navigate_to("#{@base_url}/demo/training/books.htm")
496
- @browser.textbox("q[2]").value = "aaa"
497
- assert_equal("aaa", @browser.textbox({"name"=>"q", "sahiIndex"=>2}).value)
554
+ @b.navigate_to("#{@base_url}/demo/training/books.htm")
555
+ @b.textbox("q[2]").value = "aaa"
556
+ assert_equal("aaa", @b.textbox({"name"=>"q", "sahiIndex"=>2}).value)
498
557
  end
499
558
 
500
559
  def test_key_press()
501
- @browser.navigate_to("#{@base_url}/demo/formTest.htm")
502
- @browser.textbox("t1").key_press("a")
503
- assert_equal("a", @browser.textbox("t1").value)
504
- @browser.textbox("t1").key_press([66,98]);
505
- assert_equal("ab", @browser.textbox("t1").value)
560
+ @b.navigate_to("#{@base_url}/demo/formTest.htm")
561
+ @b.textbox("t1").key_press("a")
562
+ assert_equal("a", @b.textbox("t1").value)
563
+ @b.textbox("t1").key_press([66,98]);
564
+ assert_equal("ab", @b.textbox("t1").value)
565
+ end
566
+
567
+ def test_execute_sahi()
568
+ @b.navigate_to(@base_url + "/demo/")
569
+ #@b.execute_step("_sahi._click(_sahi._link('Link Test'))")
570
+ @b.execute_sahi("_click(_link('Link Test'))")
571
+ assert_equal("Link Test", @b.heading2("Link Test").text)
572
+ end
573
+
574
+ def test_get_win_simple
575
+ @b.navigate_to(@base_url + "/demo/")
576
+ @b.wait(2)
577
+ windows = @b.get_windows()
578
+ assert_equal(1, windows.length)
579
+ assert_equal("0", windows[0]["wasOpened"])
580
+ assert_equal("Sahi Tests", windows[0]["windowTitle"])
581
+ end
582
+
583
+ def test_get_win_popup_with_title
584
+ @b.navigate_to(@base_url + "/demo/")
585
+ @b.link("Window Open Test With Title").click
586
+ @b.wait(2)
587
+ windows = @b.get_windows()
588
+ assert_equal(2, windows.length);
589
+ assert_equal("1", windows[1]["wasOpened"]);
590
+ assert_equal("With Title", windows[1]["windowTitle"]);
591
+ end
592
+
593
+ def test_get_win_popup_without_title
594
+ @b.navigate_to(@base_url + "/demo/")
595
+ @b.link("Window Open Test").click
596
+ @b.wait(2)
597
+ windows = @b.get_windows()
598
+ assert_equal(2, windows.length)
599
+ assert_equal("1", windows[1]["wasOpened"])
600
+ assert_equal("", windows[1]["windowTitle"])
601
+ end
602
+
603
+ def test_get_win_popup_with_param
604
+ @b.navigate_to(@base_url + "/demo/")
605
+ @b.link("Window Open Test").click
606
+ popup_popwin = @b.popup("popWin")
607
+ popup_popwin.close
608
+ @b.wait(3)
609
+ windows = @b.get_windows()
610
+ windows2 = @b.get_windows(0)
611
+ windows3 = @b.get_windows(2)
612
+ assert_equal(2, windows.length)
613
+ assert_equal(2, windows2.length)
614
+ assert_equal(1, windows3.length)
506
615
  end
507
616
  end