sahi 1.2.1 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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