bauxite 0.6.3 → 0.6.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8d2a10280ef336550857f4615f0ab9a6afe2d843
4
- data.tar.gz: a766b5118e740f9c854e7b9bc6c8ba0e668a6f9b
3
+ metadata.gz: 92593994aeb4e5c7dbcbd29a735cdcdbfb29db07
4
+ data.tar.gz: 34f895c5e0a421cac986ddd65fd11c8a30dd77f0
5
5
  SHA512:
6
- metadata.gz: 9111ee9abf79915ab0e4565b451f3453c5423a1edaaa5af22ac71d907ddd310b2ba1ed82209510d26e733ea2d1b44c4d405c7f258c54969c88f1e1e314f6cf86
7
- data.tar.gz: 15d7ed6aa7c005b3d3293525d3639c71f4891c667506abf787e920f2cb1bfb9346e9f47e299d96cade166edc0c052b46570a6b9866cf6506e11abfb38d2ead06
6
+ metadata.gz: 611fe021923dcb88095023c7f7ff551e5182eddcd22c0393b1e35282de29a9deec7a7dcf973ef479e78bf8e5ca0d8b468c2362109ffc235e06c2043d70e9554c
7
+ data.tar.gz: 588e7efd6f6e9f0df399ec6320fed9aac66dcb03baef4f1738dcec948eb6ba3351d995d5a13d34f5f5c427a8fd89c43ecd8d1fde0f47a24887775f456236afab
@@ -99,8 +99,12 @@
99
99
 
100
100
  <li ><a href="#method-i-assert">#assert</a>
101
101
 
102
+ <li ><a href="#method-i-asserth">#asserth</a>
103
+
102
104
  <li ><a href="#method-i-assertv">#assertv</a>
103
105
 
106
+ <li ><a href="#method-i-assertw">#assertw</a>
107
+
104
108
  <li ><a href="#method-i-break_action">#break_action</a>
105
109
 
106
110
  <li ><a href="#method-i-capture">#capture</a>
@@ -424,6 +428,72 @@ flags.</p>
424
428
 
425
429
 
426
430
 
431
+ </div>
432
+
433
+
434
+ <div id="method-i-asserth" class="method-detail ">
435
+
436
+ <div class="method-heading">
437
+ <span class="method-name">asserth</span><span
438
+ class="method-args">(*args)</span>
439
+
440
+ <span class="method-click-advice">click to toggle source</span>
441
+
442
+ </div>
443
+
444
+
445
+ <div class="method-description">
446
+
447
+ <p>Replays the current GET request and asserts that the HTTP headers returned
448
+ by that request match each of the <code>args</code> specified.</p>
449
+
450
+ <p>Note that this action results in an additional HTTP GET request to the
451
+ current browser url.</p>
452
+
453
+ <p>The syntax of <code>args</code> is:</p>
454
+
455
+ <pre>&quot;header_name1=expression1&quot; &quot;header_name2=expression2&quot; ...</pre>
456
+
457
+ <p>Where <code>expression</code> is a regular expression. Note that multiple
458
+ headers can be asserted in a single <a
459
+ href="Action.html#method-i-asserth">asserth</a> call. Also note that if the
460
+ same header is specified more than once, the value of the header must match
461
+ every expression specified.</p>
462
+
463
+ <p>For example:</p>
464
+
465
+ <pre class="ruby"><span class="ruby-comment"># assuming response headers { &#39;Content-Type&#39; =&gt; &#39;text/plain&#39; }</span>
466
+ <span class="ruby-identifier">asserth</span> <span class="ruby-string">&quot;content-type=plain&quot;</span>
467
+ <span class="ruby-identifier">asserth</span> <span class="ruby-string">&quot;content-type=^text&quot;</span> <span class="ruby-string">&quot;content-type=/plain$&quot;</span>
468
+ <span class="ruby-comment"># =&gt; these assertions would pass</span>
469
+ </pre>
470
+
471
+
472
+
473
+
474
+ <div class="method-source-code" id="asserth-source">
475
+ <pre><span class="ruby-comment"># File lib/bauxite/actions/asserth.rb, line 46</span>
476
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">asserth</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
477
+ <span class="ruby-identifier">uri</span> = <span class="ruby-constant">URI</span>(<span class="ruby-ivar">@ctx</span>.<span class="ruby-identifier">driver</span>.<span class="ruby-identifier">current_url</span>)
478
+ <span class="ruby-identifier">res</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span>.<span class="ruby-identifier">get_response</span>(<span class="ruby-identifier">uri</span>)
479
+ <span class="ruby-identifier">args</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span>
480
+ <span class="ruby-identifier">name</span>,<span class="ruby-identifier">value</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">&#39;=&#39;</span>, <span class="ruby-value">2</span>);
481
+ <span class="ruby-identifier">name</span> = <span class="ruby-identifier">name</span>.<span class="ruby-identifier">strip</span>.<span class="ruby-identifier">downcase</span>
482
+ <span class="ruby-identifier">value</span> = <span class="ruby-identifier">value</span>.<span class="ruby-identifier">strip</span>
483
+
484
+ <span class="ruby-identifier">actual</span> = <span class="ruby-identifier">res</span>[<span class="ruby-identifier">name</span>] <span class="ruby-operator">||</span> <span class="ruby-string">&#39;&#39;</span>
485
+ <span class="ruby-keyword">unless</span> <span class="ruby-identifier">actual</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">_pattern</span>(<span class="ruby-identifier">value</span>)
486
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">Bauxite</span><span class="ruby-operator">::</span><span class="ruby-constant">Errors</span><span class="ruby-operator">::</span><span class="ruby-constant">AssertionError</span>, <span class="ruby-node">&quot;Assertion failed for HTTP Header &#39;#{name}&#39;: expected &#39;#{value}&#39;, got &#39;#{actual}&#39;&quot;</span>
487
+ <span class="ruby-keyword">end</span>
488
+ <span class="ruby-keyword">end</span>
489
+ <span class="ruby-keyword">end</span></pre>
490
+ </div>
491
+
492
+ </div>
493
+
494
+
495
+
496
+
427
497
  </div>
428
498
 
429
499
 
@@ -471,6 +541,59 @@ href="Action.html#method-i-assert">assert</a> for more details.</p>
471
541
 
472
542
 
473
543
 
544
+ </div>
545
+
546
+
547
+ <div id="method-i-assertw" class="method-detail ">
548
+
549
+ <div class="method-heading">
550
+ <span class="method-name">assertw</span><span
551
+ class="method-args">(count = 1)</span>
552
+
553
+ <span class="method-click-advice">click to toggle source</span>
554
+
555
+ </div>
556
+
557
+
558
+ <div class="method-description">
559
+
560
+ <p>Asserts that the number of currently open windows equals
561
+ <code>count</code>.</p>
562
+
563
+ <p>For example:</p>
564
+
565
+ <pre class="ruby"><span class="ruby-identifier">assertw</span>
566
+ <span class="ruby-comment"># =&gt; this assertion would pass (only the main window is open)</span>
567
+
568
+ <span class="ruby-identifier">js</span> <span class="ruby-string">&quot;window.w = window.open()&quot;</span>
569
+ <span class="ruby-identifier">assertw</span> <span class="ruby-value">2</span>
570
+ <span class="ruby-comment"># =&gt; this assertion would pass (main window and popup)</span>
571
+
572
+ <span class="ruby-identifier">js</span> <span class="ruby-string">&quot;setTimeout(function() { window.w.close(); }, 3000);&quot;</span>
573
+ <span class="ruby-identifier">assertw</span> <span class="ruby-value">1</span>
574
+ <span class="ruby-comment"># =&gt; this assertion would pass (popup was closed)</span>
575
+ </pre>
576
+
577
+
578
+
579
+
580
+ <div class="method-source-code" id="assertw-source">
581
+ <pre><span class="ruby-comment"># File lib/bauxite/actions/assertw.rb, line 39</span>
582
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">assertw</span>(<span class="ruby-identifier">count</span> = <span class="ruby-value">1</span>)
583
+ <span class="ruby-ivar">@ctx</span>.<span class="ruby-identifier">with_timeout</span> <span class="ruby-constant">Bauxite</span><span class="ruby-operator">::</span><span class="ruby-constant">Errors</span><span class="ruby-operator">::</span><span class="ruby-constant">AssertionError</span> <span class="ruby-keyword">do</span>
584
+ <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@ctx</span>.<span class="ruby-identifier">driver</span>.<span class="ruby-identifier">window_handles</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">count</span>.<span class="ruby-identifier">to_i</span>
585
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">Bauxite</span><span class="ruby-operator">::</span><span class="ruby-constant">Errors</span><span class="ruby-operator">::</span><span class="ruby-constant">AssertionError</span>, <span class="ruby-string">&quot;Assertion failed: all popups must be closed.&quot;</span>
586
+ <span class="ruby-keyword">end</span>
587
+ <span class="ruby-keyword">true</span>
588
+ <span class="ruby-keyword">end</span>
589
+ <span class="ruby-keyword">end</span></pre>
590
+ </div>
591
+
592
+ </div>
593
+
594
+
595
+
596
+
474
597
  </div>
475
598
 
476
599
 
@@ -147,6 +147,12 @@ names</p>
147
147
  <div class="method-source-code" id="new-source">
148
148
  <pre><span class="ruby-comment"># File lib/bauxite/loggers/composite.rb, line 32</span>
149
149
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">options</span>)
150
+ <span class="ruby-keyword">unless</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:loggers</span>]
151
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;Missing required logger option &#39;loggers&#39;. &quot;</span><span class="ruby-operator">+</span>
152
+ <span class="ruby-string">&quot;The value of this option is a comma-separated list of valid loggers. &quot;</span><span class="ruby-operator">+</span>
153
+ <span class="ruby-string">&quot;For example loggers=xterm,file.&quot;</span>
154
+ <span class="ruby-keyword">end</span>
155
+
150
156
  <span class="ruby-ivar">@loggers</span> = <span class="ruby-identifier">options</span>[<span class="ruby-value">:loggers</span>].<span class="ruby-identifier">split</span>(<span class="ruby-string">&#39;,&#39;</span>).<span class="ruby-identifier">map</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">l</span><span class="ruby-operator">|</span>
151
157
  <span class="ruby-constant">Bauxite</span><span class="ruby-operator">::</span><span class="ruby-constant">Context</span><span class="ruby-operator">::</span><span class="ruby-identifier">load_logger</span>(<span class="ruby-identifier">l</span>, <span class="ruby-identifier">options</span>)
152
158
  <span class="ruby-keyword">end</span>
@@ -192,7 +198,7 @@ first logger.</p>
192
198
 
193
199
 
194
200
  <div class="method-source-code" id="debug_prompt-source">
195
- <pre><span class="ruby-comment"># File lib/bauxite/loggers/composite.rb, line 52</span>
201
+ <pre><span class="ruby-comment"># File lib/bauxite/loggers/composite.rb, line 58</span>
196
202
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">debug_prompt</span>
197
203
  <span class="ruby-ivar">@loggers</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">debug_prompt</span>
198
204
  <span class="ruby-keyword">end</span></pre>
@@ -225,7 +231,7 @@ first logger.</p>
225
231
 
226
232
 
227
233
  <div class="method-source-code" id="finalize-source">
228
- <pre><span class="ruby-comment"># File lib/bauxite/loggers/composite.rb, line 71</span>
234
+ <pre><span class="ruby-comment"># File lib/bauxite/loggers/composite.rb, line 77</span>
229
235
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">finalize</span>(<span class="ruby-identifier">ctx</span>)
230
236
  <span class="ruby-ivar">@loggers</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">l</span><span class="ruby-operator">|</span> <span class="ruby-identifier">l</span>.<span class="ruby-identifier">finalize</span>(<span class="ruby-identifier">ctx</span>) }
231
237
  <span class="ruby-keyword">end</span></pre>
@@ -260,7 +266,7 @@ first logger.</p>
260
266
 
261
267
 
262
268
  <div class="method-source-code" id="log-source">
263
- <pre><span class="ruby-comment"># File lib/bauxite/loggers/composite.rb, line 65</span>
269
+ <pre><span class="ruby-comment"># File lib/bauxite/loggers/composite.rb, line 71</span>
264
270
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">log</span>(<span class="ruby-identifier">s</span>, <span class="ruby-identifier">type</span> = <span class="ruby-value">:info</span>)
265
271
  <span class="ruby-ivar">@loggers</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">l</span><span class="ruby-operator">|</span> <span class="ruby-identifier">l</span>.<span class="ruby-identifier">log</span>(<span class="ruby-identifier">s</span>, <span class="ruby-identifier">type</span>) }
266
272
  <span class="ruby-keyword">end</span></pre>
@@ -297,7 +303,7 @@ first logger.</p>
297
303
 
298
304
 
299
305
  <div class="method-source-code" id="log_cmd-source">
300
- <pre><span class="ruby-comment"># File lib/bauxite/loggers/composite.rb, line 44</span>
306
+ <pre><span class="ruby-comment"># File lib/bauxite/loggers/composite.rb, line 50</span>
301
307
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">log_cmd</span>(<span class="ruby-identifier">action</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
302
308
  <span class="ruby-identifier">_log_cmd_block</span>(<span class="ruby-ivar">@loggers</span>, <span class="ruby-identifier">action</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
303
309
  <span class="ruby-keyword">end</span></pre>
@@ -330,7 +336,7 @@ first logger.</p>
330
336
 
331
337
 
332
338
  <div class="method-source-code" id="progress-source">
333
- <pre><span class="ruby-comment"># File lib/bauxite/loggers/composite.rb, line 57</span>
339
+ <pre><span class="ruby-comment"># File lib/bauxite/loggers/composite.rb, line 63</span>
334
340
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">progress</span>(<span class="ruby-identifier">value</span>)
335
341
  <span class="ruby-ivar">@loggers</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">l</span><span class="ruby-operator">|</span> <span class="ruby-identifier">l</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-identifier">value</span>) }
336
342
  <span class="ruby-keyword">end</span></pre>
@@ -328,7 +328,7 @@ parser can&#39;t handle the file.</p>
328
328
  .<span class="ruby-identifier">select</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">match</span><span class="ruby-operator">|</span> <span class="ruby-identifier">match</span> }
329
329
  .<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">match</span><span class="ruby-operator">|</span> <span class="ruby-identifier">match</span>.<span class="ruby-identifier">captures</span> }
330
330
  .<span class="ruby-identifier">map</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">action</span><span class="ruby-operator">|</span>
331
- <span class="ruby-keyword">case</span> <span class="ruby-identifier">action</span>[<span class="ruby-value">0</span>]
331
+ <span class="ruby-keyword">case</span> <span class="ruby-identifier">action</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">downcase</span>
332
332
  <span class="ruby-keyword">when</span> <span class="ruby-string">&#39;open&#39;</span>
333
333
  <span class="ruby-identifier">url</span> = <span class="ruby-identifier">action</span>[<span class="ruby-value">1</span>]
334
334
  <span class="ruby-identifier">url</span> = <span class="ruby-identifier">url</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>] <span class="ruby-keyword">if</span> <span class="ruby-identifier">url</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-string">&#39;/&#39;</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">base_ends_in_slash</span> <span class="ruby-comment"># remove leading &#39;/&#39;</span>
@@ -336,21 +336,24 @@ parser can&#39;t handle the file.</p>
336
336
  <span class="ruby-keyword">when</span> <span class="ruby-string">&#39;type&#39;</span>
337
337
  <span class="ruby-identifier">action</span>[<span class="ruby-value">0</span>] = <span class="ruby-string">&#39;write&#39;</span>
338
338
  <span class="ruby-identifier">action</span>[<span class="ruby-value">1</span>] = <span class="ruby-identifier">_selenium_ide_html_parse_selector</span>(<span class="ruby-identifier">action</span>[<span class="ruby-value">1</span>])
339
- <span class="ruby-keyword">when</span> <span class="ruby-string">&#39;verifyTextPresent&#39;</span>
339
+ <span class="ruby-keyword">when</span> <span class="ruby-string">&#39;verifytextpresent&#39;</span>
340
340
  <span class="ruby-identifier">action</span>[<span class="ruby-value">0</span>] = <span class="ruby-string">&#39;source&#39;</span>
341
- <span class="ruby-keyword">when</span> <span class="ruby-string">&#39;clickAndWait&#39;</span>, <span class="ruby-string">&#39;click&#39;</span>
341
+ <span class="ruby-keyword">when</span> <span class="ruby-string">&#39;clickandwait&#39;</span>, <span class="ruby-string">&#39;click&#39;</span>
342
342
  <span class="ruby-identifier">action</span>[<span class="ruby-value">0</span>] = <span class="ruby-string">&#39;click&#39;</span>
343
343
  <span class="ruby-identifier">action</span>[<span class="ruby-value">1</span>] = <span class="ruby-identifier">_selenium_ide_html_parse_selector</span>(<span class="ruby-identifier">action</span>[<span class="ruby-value">1</span>])
344
- <span class="ruby-keyword">when</span> <span class="ruby-string">&#39;waitForPageToLoad&#39;</span>
344
+ <span class="ruby-keyword">when</span> <span class="ruby-string">&#39;waitforpagetoload&#39;</span>
345
345
  <span class="ruby-identifier">action</span>[<span class="ruby-value">0</span>] = <span class="ruby-string">&#39;wait&#39;</span>
346
346
  <span class="ruby-identifier">action</span>[<span class="ruby-value">1</span>] = (<span class="ruby-identifier">action</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">to_i</span> <span class="ruby-operator">/</span> <span class="ruby-value">1000</span>).<span class="ruby-identifier">to_s</span>
347
- <span class="ruby-keyword">when</span> <span class="ruby-string">&#39;assertValue&#39;</span>
347
+ <span class="ruby-keyword">when</span> <span class="ruby-string">&#39;assertvalue&#39;</span>
348
348
  <span class="ruby-identifier">action</span>[<span class="ruby-value">0</span>] = <span class="ruby-string">&#39;assert&#39;</span>
349
349
  <span class="ruby-identifier">action</span>[<span class="ruby-value">1</span>] = <span class="ruby-identifier">_selenium_ide_html_parse_selector</span>(<span class="ruby-identifier">action</span>[<span class="ruby-value">1</span>])
350
+ <span class="ruby-keyword">when</span> <span class="ruby-string">&#39;waitforpopup&#39;</span>
351
+ <span class="ruby-identifier">action</span> = [] <span class="ruby-comment"># remove</span>
350
352
  <span class="ruby-keyword">end</span>
351
353
  <span class="ruby-identifier">action</span> = <span class="ruby-identifier">action</span>.<span class="ruby-identifier">select</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-identifier">a</span> <span class="ruby-operator">!=</span> <span class="ruby-string">&#39;&#39;</span> }
352
354
  [ <span class="ruby-identifier">action</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">action</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>], <span class="ruby-keyword">nil</span>, <span class="ruby-value">0</span> ]
353
355
  <span class="ruby-keyword">end</span>
356
+ .<span class="ruby-identifier">select</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-identifier">a</span>[<span class="ruby-value">0</span>] }
354
357
  <span class="ruby-keyword">end</span>
355
358
  <span class="ruby-keyword">end</span></pre>
356
359
  </div>
@@ -103,6 +103,8 @@
103
103
 
104
104
  <li ><a href="#method-i-smart">#smart</a>
105
105
 
106
+ <li ><a href="#method-i-window">#window</a>
107
+
106
108
  </ul>
107
109
  </div>
108
110
 
@@ -498,6 +500,85 @@ child control element, including input, select, textarea and button).</p>
498
500
 
499
501
 
500
502
 
503
+ </div>
504
+
505
+
506
+ <div id="method-i-window" class="method-detail ">
507
+
508
+ <div class="method-heading">
509
+ <span class="method-name">window</span><span
510
+ class="method-args">(arg, &block)</span>
511
+
512
+ <span class="method-click-advice">click to toggle source</span>
513
+
514
+ </div>
515
+
516
+
517
+ <div class="method-description">
518
+
519
+ <p>Change the selector scope to the given window and finds an element in that
520
+ window.</p>
521
+
522
+ <p>This is a composite selector. The window selector syntax is:</p>
523
+
524
+ <pre>window=|window_name|child_selector</pre>
525
+
526
+ <p>Where <code>window_name</code> is the name or url pattern of the target
527
+ window, <code>child_selector</code> is any selector available that matches
528
+ the target element inside the target window.</p>
529
+
530
+ <p>Note that the &#39;|&#39; character can be replaced with any
531
+ single-character delimiter.</p>
532
+
533
+ <p>For example:</p>
534
+
535
+ <pre class="ruby"><span class="ruby-comment"># assuming &lt;div id=&#39;label&#39;&gt;hello!&lt;/div&gt; in popup.html</span>
536
+ <span class="ruby-identifier">js</span> <span class="ruby-string">&quot;window.w = window.open(&#39;popup.html&#39;, &#39;mypopup&#39;)&quot;</span>
537
+ <span class="ruby-identifier">assert</span> <span class="ruby-string">&quot;window=|mypopup|label&quot;</span> <span class="ruby-string">&quot;hello!&quot;</span>
538
+ <span class="ruby-comment"># =&gt; this assertion would pass</span>
539
+ </pre>
540
+
541
+
542
+
543
+
544
+ <div class="method-source-code" id="window-source">
545
+ <pre><span class="ruby-comment"># File lib/bauxite/selectors/window.rb, line 44</span>
546
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">window</span>(<span class="ruby-identifier">arg</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
547
+ <span class="ruby-identifier">delimiter</span> = <span class="ruby-identifier">arg</span>[<span class="ruby-value">0</span>]
548
+ <span class="ruby-identifier">name</span>,<span class="ruby-identifier">child</span> = <span class="ruby-identifier">arg</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>].<span class="ruby-identifier">split</span>(<span class="ruby-identifier">delimiter</span>, <span class="ruby-value">2</span>)
549
+ <span class="ruby-identifier">current</span> = <span class="ruby-ivar">@ctx</span>.<span class="ruby-identifier">driver</span>.<span class="ruby-identifier">window_handle</span>
550
+ <span class="ruby-keyword">begin</span>
551
+ <span class="ruby-identifier">window_name</span> = <span class="ruby-identifier">name</span>
552
+ <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@ctx</span>.<span class="ruby-identifier">driver</span>.<span class="ruby-identifier">window_handles</span>.<span class="ruby-identifier">include?</span> <span class="ruby-identifier">name</span>
553
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">name</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">/^\/.*\/[imxo]*$/</span>
554
+ <span class="ruby-identifier">name</span> = <span class="ruby-identifier">eval</span>(<span class="ruby-identifier">name</span>)
555
+ <span class="ruby-keyword">else</span>
556
+ <span class="ruby-identifier">name</span> = <span class="ruby-node">/#{name}/</span>
557
+ <span class="ruby-keyword">end</span>
558
+
559
+ <span class="ruby-identifier">name</span> = <span class="ruby-ivar">@ctx</span>.<span class="ruby-identifier">driver</span>.<span class="ruby-identifier">window_handles</span>.<span class="ruby-identifier">find</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">h</span><span class="ruby-operator">|</span>
560
+ <span class="ruby-ivar">@ctx</span>.<span class="ruby-identifier">driver</span>.<span class="ruby-identifier">switch_to</span>.<span class="ruby-identifier">window</span> <span class="ruby-identifier">h</span>
561
+ <span class="ruby-ivar">@ctx</span>.<span class="ruby-identifier">driver</span>.<span class="ruby-identifier">current_url</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">name</span>
562
+ <span class="ruby-keyword">end</span>
563
+ <span class="ruby-keyword">end</span>
564
+
565
+ <span class="ruby-keyword">unless</span> <span class="ruby-identifier">name</span>
566
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">Bauxite</span><span class="ruby-operator">::</span><span class="ruby-constant">Errors</span><span class="ruby-operator">::</span><span class="ruby-constant">AssertionError</span>, <span class="ruby-node">&quot;Cannot find a window matching &#39;#{window_name}&#39; (either by name exact match or by url regex).&quot;</span>
567
+ <span class="ruby-keyword">end</span>
568
+
569
+ <span class="ruby-ivar">@ctx</span>.<span class="ruby-identifier">driver</span>.<span class="ruby-identifier">switch_to</span>.<span class="ruby-identifier">window</span> <span class="ruby-identifier">name</span>
570
+ <span class="ruby-identifier">find</span>(<span class="ruby-identifier">child</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
571
+ <span class="ruby-keyword">ensure</span>
572
+ <span class="ruby-ivar">@ctx</span>.<span class="ruby-identifier">driver</span>.<span class="ruby-identifier">switch_to</span>.<span class="ruby-identifier">window</span> <span class="ruby-identifier">current</span>
573
+ <span class="ruby-keyword">end</span>
574
+ <span class="ruby-keyword">end</span></pre>
575
+ </div>
576
+
577
+ </div>
578
+
579
+
580
+
581
+
501
582
  </div>
502
583
 
503
584
 
data/doc/created.rid CHANGED
@@ -1,7 +1,9 @@
1
- Wed, 05 Feb 2014 12:17:10 -0300
1
+ Thu, 06 Feb 2014 16:42:43 -0300
2
2
  README.md Fri, 31 Jan 2014 09:09:21 -0300
3
3
  lib/bauxite/actions/js.rb Mon, 27 Jan 2014 11:02:44 -0300
4
4
  lib/bauxite/actions/exec.rb Mon, 27 Jan 2014 11:02:44 -0300
5
+ lib/bauxite/actions/assertw.rb Thu, 06 Feb 2014 15:42:37 -0300
6
+ lib/bauxite/actions/asserth.rb Thu, 06 Feb 2014 12:30:11 -0300
5
7
  lib/bauxite/actions/wait.rb Mon, 27 Jan 2014 11:02:44 -0300
6
8
  lib/bauxite/actions/assert.rb Mon, 27 Jan 2014 11:02:44 -0300
7
9
  lib/bauxite/actions/ruby.rb Mon, 27 Jan 2014 11:02:44 -0300
@@ -36,16 +38,17 @@ lib/bauxite/core/parser.rb Tue, 28 Jan 2014 16:48:43 -0300
36
38
  lib/bauxite/core/action.rb Wed, 05 Feb 2014 12:11:16 -0300
37
39
  lib/bauxite/core/logger.rb Wed, 05 Feb 2014 12:11:16 -0300
38
40
  lib/bauxite/parsers/default.rb Mon, 27 Jan 2014 11:02:44 -0300
39
- lib/bauxite/parsers/html.rb Mon, 27 Jan 2014 11:02:44 -0300
41
+ lib/bauxite/parsers/html.rb Thu, 06 Feb 2014 15:58:08 -0300
40
42
  lib/bauxite/parsers/csv.rb Mon, 27 Jan 2014 11:02:44 -0300
41
43
  lib/bauxite/application.rb Tue, 04 Feb 2014 10:09:38 -0300
44
+ lib/bauxite/selectors/window.rb Thu, 06 Feb 2014 16:39:12 -0300
42
45
  lib/bauxite/selectors/frame.rb Wed, 29 Jan 2014 09:10:40 -0300
43
46
  lib/bauxite/selectors/attr.rb Mon, 27 Jan 2014 11:02:44 -0300
44
47
  lib/bauxite/selectors/sid.rb Wed, 29 Jan 2014 09:10:40 -0300
45
48
  lib/bauxite/selectors/smart.rb Mon, 03 Feb 2014 10:56:01 -0300
46
49
  lib/bauxite/loggers/terminal.rb Mon, 27 Jan 2014 11:04:47 -0300
47
50
  lib/bauxite/loggers/echo.rb Mon, 27 Jan 2014 11:03:37 -0300
48
- lib/bauxite/loggers/composite.rb Wed, 05 Feb 2014 12:11:16 -0300
51
+ lib/bauxite/loggers/composite.rb Thu, 06 Feb 2014 15:49:54 -0300
49
52
  lib/bauxite/loggers/xterm.rb Mon, 27 Jan 2014 11:02:44 -0300
50
53
  lib/bauxite/loggers/file.rb Mon, 27 Jan 2014 11:02:44 -0300
51
54
  lib/bauxite/loggers/html.rb Wed, 05 Feb 2014 12:12:28 -0300
@@ -1 +1 @@
1
- var search_data = {"index":{"searchIndex":["bauxite","action","actionmodule","application","context","errors","assertionerror","filenotfounderror","formaterror","loggers","compositelogger","echologger","filelogger","htmllogger","nulllogger","terminallogger","xtermlogger","parser","parsermodule","selector","selectormodule","_block()","_cmd_color()","_fmt()","_fmt()","_restore_cursor()","_restore_cursor()","_save_cursor()","_save_cursor()","_screen_width()","_screen_width()","action_args()","actions()","add_alias()","alias_action()","args()","assert()","assertv()","attr()","break_action()","capture()","click()","csv()","debug()","debug()","debug_prompt()","debug_prompt()","debug_prompt()","default()","doif()","echo()","exec()","exec_action()","exec_action_object()","exec_file()","exec_parsed_action()","execute()","expand()","failif()","finalize()","finalize()","finalize()","find()","find()","frame()","get_action()","get_value()","js()","load()","load_logger()","log()","log()","log()","log()","log_cmd()","log_cmd()","log_cmd()","log_cmd()","log_cmd()","log_cmd()","loggers()","max_action_name_size()","new()","new()","new()","new()","new()","new()","new()","new()","new()","open()","params()","parse()","parse_action_default()","parsers()","print_error()","progress()","progress()","progress()","replace()","reset()","reset_driver()","return_action()","ruby()","select()","selectors()","selenium_find()","selenium_ide_html()","set()","setif()","sid()","smart()","source()","start()","stop()","store()","submit()","test()","tryload()","wait()","wait()","with_driver_timeout()","with_timeout()","with_vars()","write()","readme"],"longSearchIndex":["bauxite","bauxite::action","bauxite::actionmodule","bauxite::application","bauxite::context","bauxite::errors","bauxite::errors::assertionerror","bauxite::errors::filenotfounderror","bauxite::errors::formaterror","bauxite::loggers","bauxite::loggers::compositelogger","bauxite::loggers::echologger","bauxite::loggers::filelogger","bauxite::loggers::htmllogger","bauxite::loggers::nulllogger","bauxite::loggers::terminallogger","bauxite::loggers::xtermlogger","bauxite::parser","bauxite::parsermodule","bauxite::selector","bauxite::selectormodule","bauxite::loggers::terminallogger#_block()","bauxite::loggers::terminallogger#_cmd_color()","bauxite::loggers::terminallogger#_fmt()","bauxite::loggers::xtermlogger#_fmt()","bauxite::loggers::terminallogger#_restore_cursor()","bauxite::loggers::xtermlogger#_restore_cursor()","bauxite::loggers::terminallogger#_save_cursor()","bauxite::loggers::xtermlogger#_save_cursor()","bauxite::loggers::terminallogger#_screen_width()","bauxite::loggers::xtermlogger#_screen_width()","bauxite::context::action_args()","bauxite::context::actions()","bauxite::context#add_alias()","bauxite::action#alias_action()","bauxite::actionmodule#args()","bauxite::action#assert()","bauxite::action#assertv()","bauxite::selector#attr()","bauxite::action#break_action()","bauxite::action#capture()","bauxite::action#click()","bauxite::parser#csv()","bauxite::action#debug()","bauxite::context#debug()","bauxite::loggers::compositelogger#debug_prompt()","bauxite::loggers::nulllogger#debug_prompt()","bauxite::loggers::terminallogger#debug_prompt()","bauxite::parser#default()","bauxite::action#doif()","bauxite::action#echo()","bauxite::action#exec()","bauxite::context#exec_action()","bauxite::context#exec_action_object()","bauxite::context#exec_file()","bauxite::context#exec_parsed_action()","bauxite::actionmodule#execute()","bauxite::context#expand()","bauxite::action#failif()","bauxite::loggers::compositelogger#finalize()","bauxite::loggers::htmllogger#finalize()","bauxite::loggers::nulllogger#finalize()","bauxite::context#find()","bauxite::selectormodule#find()","bauxite::selector#frame()","bauxite::context#get_action()","bauxite::context#get_value()","bauxite::action#js()","bauxite::action#load()","bauxite::context::load_logger()","bauxite::loggers::compositelogger#log()","bauxite::loggers::htmllogger#log()","bauxite::loggers::nulllogger#log()","bauxite::loggers::terminallogger#log()","bauxite::loggers::compositelogger#log_cmd()","bauxite::loggers::echologger#log_cmd()","bauxite::loggers::filelogger#log_cmd()","bauxite::loggers::htmllogger#log_cmd()","bauxite::loggers::nulllogger#log_cmd()","bauxite::loggers::terminallogger#log_cmd()","bauxite::context::loggers()","bauxite::context::max_action_name_size()","bauxite::actionmodule::new()","bauxite::context::new()","bauxite::loggers::compositelogger::new()","bauxite::loggers::filelogger::new()","bauxite::loggers::htmllogger::new()","bauxite::loggers::nulllogger::new()","bauxite::loggers::terminallogger::new()","bauxite::parsermodule::new()","bauxite::selectormodule::new()","bauxite::action#open()","bauxite::action#params()","bauxite::parsermodule#parse()","bauxite::context::parse_action_default()","bauxite::context::parsers()","bauxite::context#print_error()","bauxite::loggers::compositelogger#progress()","bauxite::loggers::nulllogger#progress()","bauxite::loggers::terminallogger#progress()","bauxite::action#replace()","bauxite::action#reset()","bauxite::context#reset_driver()","bauxite::action#return_action()","bauxite::action#ruby()","bauxite::action#select()","bauxite::context::selectors()","bauxite::selectormodule#selenium_find()","bauxite::parser#selenium_ide_html()","bauxite::action#set()","bauxite::action#setif()","bauxite::selector#sid()","bauxite::selector#smart()","bauxite::action#source()","bauxite::context#start()","bauxite::context#stop()","bauxite::action#store()","bauxite::action#submit()","bauxite::action#test()","bauxite::action#tryload()","bauxite::action#wait()","bauxite::context::wait()","bauxite::context#with_driver_timeout()","bauxite::context#with_timeout()","bauxite::context#with_vars()","bauxite::action#write()",""],"info":[["Bauxite","","Bauxite.html","","<p>Bauxite Namespace\n"],["Bauxite::Action","","Bauxite/Action.html","","<p>Test action class.\n<p>Test actions are basic test operations that can be combined to create a\ntest case. …\n"],["Bauxite::ActionModule","","Bauxite/ActionModule.html","","<p>Action common state and behavior.\n"],["Bauxite::Application","","Bauxite/Application.html","","<p><code>bauxite</code> command-line program.\n<p>This program executes Bauxite tests and outputs the execution progress and\n…\n"],["Bauxite::Context","","Bauxite/Context.html","","<p>The Main test context. This class includes state and helper functions used\nby clients execute tests and …\n"],["Bauxite::Errors","","Bauxite/Errors.html","","<p>Errors Module\n"],["Bauxite::Errors::AssertionError","","Bauxite/Errors/AssertionError.html","","<p>Error raised when an assertion fails.\n"],["Bauxite::Errors::FileNotFoundError","","Bauxite/Errors/FileNotFoundError.html","","<p>Error raised when an invalid file tried to be loaded.\n"],["Bauxite::Errors::FormatError","","Bauxite/Errors/FormatError.html","","<p>Error raised when trying to process an invalid file format.\n"],["Bauxite::Loggers","","Bauxite/Loggers.html","","<p>Test loggers module\n<p>The default Logger class and all custom loggers must be included in this\nmodule.\n"],["Bauxite::Loggers::CompositeLogger","","Bauxite/Loggers/CompositeLogger.html","","<p>Composite logger.\n<p>This composite logger forwards logging calls to each of its children.\n<p>Set the <code>:loggers</code> …\n"],["Bauxite::Loggers::EchoLogger","","Bauxite/Loggers/EchoLogger.html","","<p>Echo logger.\n<p>This logger outputs the raw action text for every action executed.\n<p>Note that this logger does …\n"],["Bauxite::Loggers::FileLogger","","Bauxite/Loggers/FileLogger.html","","<p>File logger.\n<p>This logger outputs the raw action text for every action executed to the\nfile specified in …\n"],["Bauxite::Loggers::HtmlLogger","","Bauxite/Loggers/HtmlLogger.html","","<p>Echo logger.\n<p>This logger outputs the raw action text for every action executed.\n<p>Note that this logger does …\n"],["Bauxite::Loggers::NullLogger","","Bauxite/Loggers/NullLogger.html","","<p>Test logger class.\n<p>Test loggers handle test output format.\n<p>The default logger does not provide any output …\n"],["Bauxite::Loggers::TerminalLogger","","Bauxite/Loggers/TerminalLogger.html","","<p>Terminal logger.\n<p>This logger outputs text using basic text formatting for a terminal window.\n"],["Bauxite::Loggers::XtermLogger","","Bauxite/Loggers/XtermLogger.html","","<p>XTerm logger.\n<p>This logger outputs colorized lines using xterm (VT100/2) escape sequences.\n"],["Bauxite::Parser","","Bauxite/Parser.html","","<p>Parser class.\n<p>Parser represent different strategies for reading input files into lists of\nBauxite actions. …\n"],["Bauxite::ParserModule","","Bauxite/ParserModule.html","","<p>Parser common state and behavior.\n"],["Bauxite::Selector","","Bauxite/Selector.html","","<p>Selector class.\n<p>Selectors represent different strategies for finding elements. Selenium\nprovides a list …\n"],["Bauxite::SelectorModule","","Bauxite/SelectorModule.html","","<p>Selector common state and behavior.\n"],["_block","Bauxite::Loggers::TerminalLogger","Bauxite/Loggers/TerminalLogger.html#method-i-_block","(color, text, size)","<p>Prints <code>text</code> centered inside a square-bracketed block.\n"],["_cmd_color","Bauxite::Loggers::TerminalLogger","Bauxite/Loggers/TerminalLogger.html#method-i-_cmd_color","(cmd)","<p>Get the color of <code>cmd</code>.\n"],["_fmt","Bauxite::Loggers::TerminalLogger","Bauxite/Loggers/TerminalLogger.html#method-i-_fmt","(color, text, size = 0)","<p>Centers <code>text</code> to a fixed size with.\n"],["_fmt","Bauxite::Loggers::XtermLogger","Bauxite/Loggers/XtermLogger.html#method-i-_fmt","(color, text, size = 0)",""],["_restore_cursor","Bauxite::Loggers::TerminalLogger","Bauxite/Loggers/TerminalLogger.html#method-i-_restore_cursor","()","<p>Restores the cursor to the previously saved cursor position.\n"],["_restore_cursor","Bauxite::Loggers::XtermLogger","Bauxite/Loggers/XtermLogger.html#method-i-_restore_cursor","()",""],["_save_cursor","Bauxite::Loggers::TerminalLogger","Bauxite/Loggers/TerminalLogger.html#method-i-_save_cursor","()","<p>Save the current cursor position,\n"],["_save_cursor","Bauxite::Loggers::XtermLogger","Bauxite/Loggers/XtermLogger.html#method-i-_save_cursor","()",""],["_screen_width","Bauxite::Loggers::TerminalLogger","Bauxite/Loggers/TerminalLogger.html#method-i-_screen_width","()","<p>Returns the terminal screen width.\n"],["_screen_width","Bauxite::Loggers::XtermLogger","Bauxite/Loggers/XtermLogger.html#method-i-_screen_width","()",""],["action_args","Bauxite::Context","Bauxite/Context.html#method-c-action_args","(action)","<p>Returns an array with the names of the arguments of the specified action.\n<p>For example:\n\n<pre>Context::action_args ...</pre>\n"],["actions","Bauxite::Context","Bauxite/Context.html#method-c-actions","()","<p>Returns an array with the names of every action available.\n<p>For example:\n\n<pre class=\"ruby\"><span class=\"ruby-constant\">Context</span><span class=\"ruby-operator\">::</span><span class=\"ruby-identifier\">actions</span>\n<span class=\"ruby-comment\"># =&gt; [ &quot;assert&quot;, ...</span>\n</pre>\n"],["add_alias","Bauxite::Context","Bauxite/Context.html#method-i-add_alias","(name, action, args)","<p>Adds an alias named <code>name</code> to the specified <code>action</code>\nwith the arguments specified in <code>args</code>.\n"],["alias_action","Bauxite::Action","Bauxite/Action.html#method-i-alias_action","(name, action, *args)","<p>Aliases <code>name</code> to <code>action</code> with additional arguments.\n<p>In <code>args</code> the variables <code>${1}</code>..<code>${n}</code>\nwill be expanded to …\n"],["args","Bauxite::ActionModule","Bauxite/ActionModule.html#method-i-args","(quote = false)","<p>Returns the action arguments after applying variable expansion.\n<p>See Context#expand.\n<p>If <code>quote</code> is <code>true</code>, the …\n"],["assert","Bauxite::Action","Bauxite/Action.html#method-i-assert","(selector, text)","<p>Asserts that the value of the selected element matches <code>text</code>.\n<p><code>text</code> is a regular expression. <code>text</code> can be …\n"],["assertv","Bauxite::Action","Bauxite/Action.html#method-i-assertv","(expected, actual)","<p>Asserts that the <code>actual</code> text matches the <code>expected</code>\ntext.\n<p><code>expected</code> can be a regular expression. See #assert …\n"],["attr","Bauxite::Selector","Bauxite/Selector.html#method-i-attr","(arg, &block)","<p>Select an element by attribute value.\n<p>The attribute selector syntax is:\n\n<pre>attr=name:value</pre>\n"],["break_action","Bauxite::Action","Bauxite/Action.html#method-i-break_action","()","<p>Prompts the user to press ENTER before resuming execution.\n<p>Note that this method provides an action named …\n"],["capture","Bauxite::Action","Bauxite/Action.html#method-i-capture","(file = nil)","<p>Captures a screenshot of the current browser window and saves it with\nspecified <code>file</code> name. If <code>file</code> is …\n"],["click","Bauxite::Action","Bauxite/Action.html#method-i-click","(selector)","<p>Triggers the <code>click</code> event on the selected element.\n<p>For example:\n\n<pre># assuming &lt;button type=&quot;button&quot; id=&quot;btn&quot;&gt;click ...</pre>\n"],["csv","Bauxite::Parser","Bauxite/Parser.html#method-i-csv","(file)","<p>Load CSV files.\n"],["debug","Bauxite::Action","Bauxite/Action.html#method-i-debug","()","<p>Breaks into the debug console.\n<p>In the debug console you can type action strings and test their result. …\n"],["debug","Bauxite::Context","Bauxite/Context.html#method-i-debug","()","<p>Breaks into the debug console.\n<p>For example:\n\n<pre class=\"ruby\"><span class=\"ruby-identifier\">ctx</span>.<span class=\"ruby-identifier\">debug</span>\n<span class=\"ruby-comment\"># =&gt; this breaks into the debug console</span>\n</pre>\n"],["debug_prompt","Bauxite::Loggers::CompositeLogger","Bauxite/Loggers/CompositeLogger.html#method-i-debug_prompt","()","<p>Returns a colorized debug prompt.\n<p>This implementation returns the debug_prompt of the first logger.\n"],["debug_prompt","Bauxite::Loggers::NullLogger","Bauxite/Loggers/NullLogger.html#method-i-debug_prompt","()","<p>Returns the prompt shown by the debug console (see Context#debug).\n<p>For example:\n\n<pre class=\"ruby\"><span class=\"ruby-identifier\">log</span>.<span class=\"ruby-identifier\">debug_prompt</span>\n<span class=\"ruby-comment\"># =&gt; returns ...</span>\n</pre>\n"],["debug_prompt","Bauxite::Loggers::TerminalLogger","Bauxite/Loggers/TerminalLogger.html#method-i-debug_prompt","()","<p>Returns a colorized debug prompt.\n"],["default","Bauxite::Parser","Bauxite/Parser.html#method-i-default","(file, io = nil)","<p>Load default Bauxite files.\n"],["doif","Bauxite::Action","Bauxite/Action.html#method-i-doif","(expected, actual, action, *args)","<p>Executes <code>action</code> only if <code>expected</code> matches\n<code>actual</code>.\n<p>The conditional check in this action is similar to #assertv …\n"],["echo","Bauxite::Action","Bauxite/Action.html#method-i-echo","(text)","<p>Prints the value of the specified <code>text</code>.\n<p><code>text</code> is subject to variable expansion (see Context#expand).\n<p>For …\n"],["exec","Bauxite::Action","Bauxite/Action.html#method-i-exec","(*command)","<p>Executes <code>command</code>, optionally storing the results in a\nvariable.\n<p>If the first argument of <code>command</code> is <code>name=...</code> …\n"],["exec_action","Bauxite::Context","Bauxite/Context.html#method-i-exec_action","(text)","<p>Executes the specified action string handling errors, logging and debug\nhistory.\n<p>If <code>log</code> is <code>true</code>, log the …\n"],["exec_action_object","Bauxite::Context","Bauxite/Context.html#method-i-exec_action_object","(action)","<p>Executes the specified action object injecting built-in variables. Note\nthat the result returned by this …\n"],["exec_file","Bauxite::Context","Bauxite/Context.html#method-i-exec_file","(file)","<p>Executes the specified <code>file</code>.\n<p>For example:\n\n<pre class=\"ruby\"><span class=\"ruby-identifier\">ctx</span>.<span class=\"ruby-identifier\">exec_file</span>(<span class=\"ruby-string\">&#39;file&#39;</span>)\n<span class=\"ruby-comment\"># =&gt; executes every action defined in &#39;file&#39;</span>\n</pre>\n"],["exec_parsed_action","Bauxite::Context","Bauxite/Context.html#method-i-exec_parsed_action","(action, args, log = true, text = nil)","<p>Executes the specified action handling errors, logging and debug history.\n<p>If <code>log</code> is <code>true</code>, log the action …\n"],["execute","Bauxite::ActionModule","Bauxite/ActionModule.html#method-i-execute","()","<p>Executes the action evaluating the arguments in the current context.\n<p>Note that #execute calls #args to …\n"],["expand","Bauxite::Context","Bauxite/Context.html#method-i-expand","(s)","<p>Recursively replaces occurencies of variable expansions in <code>s</code>\nwith the corresponding variable value.\n<p>The …\n"],["failif","Bauxite::Action","Bauxite/Action.html#method-i-failif","(action, *args)","<p>Executes the specified <code>action</code> expected to fail. If\n<code>action</code> succeeds the #failif action fails. If\n<code>action</code> …\n"],["finalize","Bauxite::Loggers::CompositeLogger","Bauxite/Loggers/CompositeLogger.html#method-i-finalize","(ctx)","<p>Completes the log execution.\n"],["finalize","Bauxite::Loggers::HtmlLogger","Bauxite/Loggers/HtmlLogger.html#method-i-finalize","(ctx)","<p>Completes the log execution.\n"],["finalize","Bauxite::Loggers::NullLogger","Bauxite/Loggers/NullLogger.html#method-i-finalize","(ctx)","<p>Completes the log execution.\n"],["find","Bauxite::Context","Bauxite/Context.html#method-i-find","(selector)","<p>Finds an element by <code>selector</code>.\n<p>The element found is yielded to the given <code>block</code> (if any) and\nreturned.\n<p>Note …\n"],["find","Bauxite::SelectorModule","Bauxite/SelectorModule.html#method-i-find","(selector, &block)","<p>Searches for elements using the specified selector string.\n<p>For more information see Context#find.\n<p>Selectors …\n"],["frame","Bauxite::Selector","Bauxite/Selector.html#method-i-frame","(arg, &block)","<p>Change the selector scope to the given frame and finds an element in that\nframe.\n<p>This is a composite selector. …\n"],["get_action","Bauxite::Context","Bauxite/Context.html#method-i-get_action","(action, args, text = nil)","<p>Returns an executable Action object constructed from the specified\narguments resolving action aliases. …\n"],["get_value","Bauxite::Context","Bauxite/Context.html#method-i-get_value","(element)","<p>Returns the value of the specified <code>element</code>.\n<p>This method takes into account the type of element and selectively …\n"],["js","Bauxite::Action","Bauxite/Action.html#method-i-js","(script, name = nil)","<p>Executes the specified Javascript <code>script</code>, optionally storing\nthe results the variable named <code>name</code>.\n<p>Note …\n"],["load","Bauxite::Action","Bauxite/Action.html#method-i-load","(file, *vars)","<p>Load the specified file into an isolated variable context and execute the\nactions specified. If the file …\n"],["load_logger","Bauxite::Context","Bauxite/Context.html#method-c-load_logger","(name, options)","<p>Constructs a Logger instance using <code>name</code> as a hint for the\nlogger type.\n"],["log","Bauxite::Loggers::CompositeLogger","Bauxite/Loggers/CompositeLogger.html#method-i-log","(s, type = :info)","<p>Prints the specified string.\n<p>See Bauxite::Loggers::NullLogger#print\n"],["log","Bauxite::Loggers::HtmlLogger","Bauxite/Loggers/HtmlLogger.html#method-i-log","(s, type = :info)","<p>Logs the specified string.\n<p><code>type</code>, if specified, should be one of <code>:error</code>,\n<code>:warning</code>, <code>:info</code> (default), <code>:debug</code> …\n"],["log","Bauxite::Loggers::NullLogger","Bauxite/Loggers/NullLogger.html#method-i-log","(s, type = :info)","<p>Logs the specified string.\n<p><code>type</code>, if specified, should be one of <code>:error</code>,\n<code>:warning</code>, <code>:info</code> (default), <code>:debug</code> …\n"],["log","Bauxite::Loggers::TerminalLogger","Bauxite/Loggers/TerminalLogger.html#method-i-log","(s, type = :info)","<p>Prints the specified string.\n<p>See Bauxite::Loggers::NullLogger#print\n"],["log_cmd","Bauxite::Loggers::CompositeLogger","Bauxite/Loggers/CompositeLogger.html#method-i-log_cmd","(action, &block)","<p>Pretty prints action information and status.\n<p>This implementation only yileds in the first logger.\n<p>Additional …\n"],["log_cmd","Bauxite::Loggers::EchoLogger","Bauxite/Loggers/EchoLogger.html#method-i-log_cmd","(action)","<p>Echoes the raw action text.\n"],["log_cmd","Bauxite::Loggers::FileLogger","Bauxite/Loggers/FileLogger.html#method-i-log_cmd","(action)","<p>Echoes the raw action text.\n"],["log_cmd","Bauxite::Loggers::HtmlLogger","Bauxite/Loggers/HtmlLogger.html#method-i-log_cmd","(action)","<p>Echoes the raw action text.\n"],["log_cmd","Bauxite::Loggers::NullLogger","Bauxite/Loggers/NullLogger.html#method-i-log_cmd","(action)","<p>Executes the given block in a logging context.\n<p>This default implementation does not provide any logging …\n"],["log_cmd","Bauxite::Loggers::TerminalLogger","Bauxite/Loggers/TerminalLogger.html#method-i-log_cmd","(action)","<p>Pretty prints action information and status.\n"],["loggers","Bauxite::Context","Bauxite/Context.html#method-c-loggers","()","<p>Returns an array with the names of every logger available.\n<p>For example:\n\n<pre class=\"ruby\"><span class=\"ruby-constant\">Context</span><span class=\"ruby-operator\">::</span><span class=\"ruby-identifier\">loggers</span>\n<span class=\"ruby-comment\"># =&gt; [ &quot;null&quot;, ...</span>\n</pre>\n"],["max_action_name_size","Bauxite::Context","Bauxite/Context.html#method-c-max_action_name_size","()","<p>Returns the maximum size in characters of an action name.\n<p>This method is useful to pretty print lists …\n"],["new","Bauxite::ActionModule","Bauxite/ActionModule.html#method-c-new","(ctx, cmd, args, text, file, line)","<p>Constructs a new test action instance.\n"],["new","Bauxite::Context","Bauxite/Context.html#method-c-new","(options)","<p>Constructs a new test context instance.\n<p><code>options</code> is a hash with the following values:\n<p>:driver &mdash; selenium driver …\n"],["new","Bauxite::Loggers::CompositeLogger","Bauxite/Loggers/CompositeLogger.html#method-c-new","(options)","<p>Constructs a new composite logger instance.\n"],["new","Bauxite::Loggers::FileLogger","Bauxite/Loggers/FileLogger.html#method-c-new","(options)","<p>Constructs a new echo logger instance.\n"],["new","Bauxite::Loggers::HtmlLogger","Bauxite/Loggers/HtmlLogger.html#method-c-new","(options)","<p>Constructs a new null logger instance.\n"],["new","Bauxite::Loggers::NullLogger","Bauxite/Loggers/NullLogger.html#method-c-new","(options)","<p>Constructs a new null logger instance.\n"],["new","Bauxite::Loggers::TerminalLogger","Bauxite/Loggers/TerminalLogger.html#method-c-new","(options)","<p>Constructs a new Terminal logger instance.\n"],["new","Bauxite::ParserModule","Bauxite/ParserModule.html#method-c-new","(ctx)","<p>Constructs a new test parser instance.\n"],["new","Bauxite::SelectorModule","Bauxite/SelectorModule.html#method-c-new","(ctx, default_selector)","<p>Constructs a new test selector instance.\n"],["open","Bauxite::Action","Bauxite/Action.html#method-i-open","(url)","<p>Opens the specified <code>url</code> in the browser.\n<p>For example:\n\n<pre class=\"ruby\"><span class=\"ruby-identifier\">open</span> <span class=\"ruby-string\">&quot;http://www.ruby-lang.org&quot;</span>\n<span class=\"ruby-comment\"># =&gt; this would open ...</span>\n</pre>\n"],["params","Bauxite::Action","Bauxite/Action.html#method-i-params","(*vars)","<p>Asserts that the variables named <code>vars</code> are defined and not\nempty.\n<p>For example:\n\n<pre>params host db_name username ...</pre>\n"],["parse","Bauxite::ParserModule","Bauxite/ParserModule.html#method-i-parse","(file)","<p>Parse <code>file</code> and yield the resulting actions.\n"],["parse_action_default","Bauxite::Context","Bauxite/Context.html#method-c-parse_action_default","(text, file = '<unknown>', line = 0)","<p>Default action parsing strategy.\n"],["parsers","Bauxite::Context","Bauxite/Context.html#method-c-parsers","()","<p>Returns an array with the names of every parser available.\n<p>For example:\n\n<pre class=\"ruby\"><span class=\"ruby-constant\">Context</span><span class=\"ruby-operator\">::</span><span class=\"ruby-identifier\">parsers</span>\n<span class=\"ruby-comment\"># =&gt; [ &quot;default&quot;, ...</span>\n</pre>\n"],["print_error","Bauxite::Context","Bauxite/Context.html#method-i-print_error","(e, capture = true)","<p>Prints the specified <code>error</code> using the Logger configured and \nhandling the verbose option.\n<p>For example: …\n"],["progress","Bauxite::Loggers::CompositeLogger","Bauxite/Loggers/CompositeLogger.html#method-i-progress","(value)","<p>Updates action progress.\n"],["progress","Bauxite::Loggers::NullLogger","Bauxite/Loggers/NullLogger.html#method-i-progress","(value)","<p>Updates the progress of the current action.\n"],["progress","Bauxite::Loggers::TerminalLogger","Bauxite/Loggers/TerminalLogger.html#method-i-progress","(value)","<p>Updates action progress.\n"],["replace","Bauxite::Action","Bauxite/Action.html#method-i-replace","(text, pattern, replacement, name)","<p>Replaces the occurrences of <code>pattern</code> in <code>text</code> with\n<code>replacement</code> and assigns the result to the variable named …\n"],["reset","Bauxite::Action","Bauxite/Action.html#method-i-reset","()","<p>Resets the test engine by closing and reopening the browser. As a side\neffect of resetting the test engine, …\n"],["reset_driver","Bauxite::Context","Bauxite/Context.html#method-i-reset_driver","()","<p>Stops the test engine and starts a new engine with the same provider.\n<p>For example:\n\n<pre class=\"ruby\"><span class=\"ruby-identifier\">ctx</span>.<span class=\"ruby-identifier\">reset_driver</span>\n=<span class=\"ruby-operator\">&gt;</span> <span class=\"ruby-operator\">...</span>\n</pre>\n"],["return_action","Bauxite::Action","Bauxite/Action.html#method-i-return_action","(*vars)","<p>Returns the specified variables to the parent scope (if any).\n<p>If <code>vars</code> is <code>*</code> every variable defined in the …\n"],["ruby","Bauxite::Action","Bauxite/Action.html#method-i-ruby","(file, *vars)","<p>Load the specified ruby file into an isolated variable context and execute\nthe ruby code.\n<p><code>file</code> can be …\n"],["select","Bauxite::Action","Bauxite/Action.html#method-i-select","(selector, text)","<p>Sets the value of the selected <code>HTMLSelect</code> to\n<code>text</code>.\n<p><code>text</code> can be the <code>value</code> or the <code>text</code> of\nthe target <code>HTMLOption</code> …\n"],["selectors","Bauxite::Context","Bauxite/Context.html#method-c-selectors","(include_standard_selectors = true)","<p>Returns an array with the names of every selector available.\n<p>If <code>include_standard_selectors</code> is <code>true</code> (default …\n"],["selenium_find","Bauxite::SelectorModule","Bauxite/SelectorModule.html#method-i-selenium_find","(type, selector)","<p>Searches for elements using standard Selenium selectors.\n<p>Selectors calling this method should forward …\n"],["selenium_ide_html","Bauxite::Parser","Bauxite/Parser.html#method-i-selenium_ide_html","(file)","<p>Load Selenium IDE HTML files.\n"],["set","Bauxite::Action","Bauxite/Action.html#method-i-set","(name, value)","<p>Sets the variable named <code>name</code> to the <code>value</code>\nspecified.\n<p>Both <code>name</code> and <code>value</code> are subject to variable\nexpansion …\n"],["setif","Bauxite::Action","Bauxite/Action.html#method-i-setif","(name, value, action, *args)","<p>Sets the variable named <code>name</code> to the <code>value</code>\nspecified only if the. <code>action</code> execution succeeds. If the\nexecution …\n"],["sid","Bauxite::Selector","Bauxite/Selector.html#method-i-sid","(arg, &block)","<p>Select an element by id suffix.\n<p>This is the default selector. Any selector strings that do not contain …\n"],["smart","Bauxite::Selector","Bauxite/Selector.html#method-i-smart","(arg, &block)","<p>Select an element by applying different Selector strategies.\n<p>This selector tries to find elements by using …\n"],["source","Bauxite::Action","Bauxite/Action.html#method-i-source","(text)","<p>Asserts that the page source matches <code>text</code>.\n<p><code>text</code> can be a regular expression. See #assert for more\ndetails. …\n"],["start","Bauxite::Context","Bauxite/Context.html#method-i-start","(actions = [])","<p>Starts the test engine and executes the actions specified. If no action was\nspecified, returns without …\n"],["stop","Bauxite::Context","Bauxite/Context.html#method-i-stop","()","<p>Stops the test engine.\n<p>Calling this method at the end of the test is mandatory if #start was\ncalled without …\n"],["store","Bauxite::Action","Bauxite/Action.html#method-i-store","(selector, name)","<p>Sets the variable named <code>name</code> to the value of the selected\nelement.\n<p><code>name</code> is subject to variable expansion …\n"],["submit","Bauxite::Action","Bauxite/Action.html#method-i-submit","(selector)","<p>Submits the form that contains the selected element.\n<p>For example:\n\n<pre># assuming &lt;form&gt;&lt;input id=&quot;i&quot;/&gt;&lt;/form&gt; ...</pre>\n"],["test","Bauxite::Action","Bauxite/Action.html#method-i-test","(file, name = nil)","<p>Load <code>file</code> using the #load action into a new test context.\n<p>If <code>name</code> is specified, it will be used as the …\n"],["tryload","Bauxite::Action","Bauxite/Action.html#method-i-tryload","(file, *vars)","<p>Load the specified file into an isolated variable context and execute the\nactions specified. If the file …\n"],["wait","Bauxite::Action","Bauxite/Action.html#method-i-wait","(seconds)","<p>Wait for the specified number of <code>seconds</code>.\n<p>For example:\n\n<pre class=\"ruby\"><span class=\"ruby-identifier\">wait</span> <span class=\"ruby-value\">5</span>\n<span class=\"ruby-comment\"># =&gt; this would wait for 5 seconds and then ...</span>\n</pre>\n"],["wait","Bauxite::Context","Bauxite/Context.html#method-c-wait","()","<p>Prompts the user to press ENTER before resuming execution.\n<p>For example:\n\n<pre class=\"ruby\"><span class=\"ruby-constant\">Context</span><span class=\"ruby-operator\">::</span><span class=\"ruby-identifier\">wait</span>\n<span class=\"ruby-comment\"># =&gt; echoes &quot;Press ...</span>\n</pre>\n"],["with_driver_timeout","Bauxite::Context","Bauxite/Context.html#method-i-with_driver_timeout","(timeout)","<p>Executes the given block using the specified driver <code>timeout</code>.\n<p>Note that the driver <code>timeout</code> is the time …\n"],["with_timeout","Bauxite::Context","Bauxite/Context.html#method-i-with_timeout","(*error_types)","<p>Executes the given block retrying for at most <code>${__TIMEOUT__}</code>\nseconds. Note that this method does not …\n"],["with_vars","Bauxite::Context","Bauxite/Context.html#method-i-with_vars","(vars)","<p>Temporarily alter the value of context variables.\n<p>This method alters the value of the variables specified …\n"],["write","Bauxite::Action","Bauxite/Action.html#method-i-write","(selector, text)","<p>Sets the value of the selected element to <code>text</code>.\n<p><code>text</code> is subject to variable expansion (see Context#expand …\n"],["README","","README_md.html","","<p>bauxite\n<p>Bauxite is a façade over Selenium intended for non-developers\n<p>The idea behind this project was …\n"]]}}
1
+ var search_data = {"index":{"searchIndex":["bauxite","action","actionmodule","application","context","errors","assertionerror","filenotfounderror","formaterror","loggers","compositelogger","echologger","filelogger","htmllogger","nulllogger","terminallogger","xtermlogger","parser","parsermodule","selector","selectormodule","_block()","_cmd_color()","_fmt()","_fmt()","_restore_cursor()","_restore_cursor()","_save_cursor()","_save_cursor()","_screen_width()","_screen_width()","action_args()","actions()","add_alias()","alias_action()","args()","assert()","asserth()","assertv()","assertw()","attr()","break_action()","capture()","click()","csv()","debug()","debug()","debug_prompt()","debug_prompt()","debug_prompt()","default()","doif()","echo()","exec()","exec_action()","exec_action_object()","exec_file()","exec_parsed_action()","execute()","expand()","failif()","finalize()","finalize()","finalize()","find()","find()","frame()","get_action()","get_value()","js()","load()","load_logger()","log()","log()","log()","log()","log_cmd()","log_cmd()","log_cmd()","log_cmd()","log_cmd()","log_cmd()","loggers()","max_action_name_size()","new()","new()","new()","new()","new()","new()","new()","new()","new()","open()","params()","parse()","parse_action_default()","parsers()","print_error()","progress()","progress()","progress()","replace()","reset()","reset_driver()","return_action()","ruby()","select()","selectors()","selenium_find()","selenium_ide_html()","set()","setif()","sid()","smart()","source()","start()","stop()","store()","submit()","test()","tryload()","wait()","wait()","window()","with_driver_timeout()","with_timeout()","with_vars()","write()","readme"],"longSearchIndex":["bauxite","bauxite::action","bauxite::actionmodule","bauxite::application","bauxite::context","bauxite::errors","bauxite::errors::assertionerror","bauxite::errors::filenotfounderror","bauxite::errors::formaterror","bauxite::loggers","bauxite::loggers::compositelogger","bauxite::loggers::echologger","bauxite::loggers::filelogger","bauxite::loggers::htmllogger","bauxite::loggers::nulllogger","bauxite::loggers::terminallogger","bauxite::loggers::xtermlogger","bauxite::parser","bauxite::parsermodule","bauxite::selector","bauxite::selectormodule","bauxite::loggers::terminallogger#_block()","bauxite::loggers::terminallogger#_cmd_color()","bauxite::loggers::terminallogger#_fmt()","bauxite::loggers::xtermlogger#_fmt()","bauxite::loggers::terminallogger#_restore_cursor()","bauxite::loggers::xtermlogger#_restore_cursor()","bauxite::loggers::terminallogger#_save_cursor()","bauxite::loggers::xtermlogger#_save_cursor()","bauxite::loggers::terminallogger#_screen_width()","bauxite::loggers::xtermlogger#_screen_width()","bauxite::context::action_args()","bauxite::context::actions()","bauxite::context#add_alias()","bauxite::action#alias_action()","bauxite::actionmodule#args()","bauxite::action#assert()","bauxite::action#asserth()","bauxite::action#assertv()","bauxite::action#assertw()","bauxite::selector#attr()","bauxite::action#break_action()","bauxite::action#capture()","bauxite::action#click()","bauxite::parser#csv()","bauxite::action#debug()","bauxite::context#debug()","bauxite::loggers::compositelogger#debug_prompt()","bauxite::loggers::nulllogger#debug_prompt()","bauxite::loggers::terminallogger#debug_prompt()","bauxite::parser#default()","bauxite::action#doif()","bauxite::action#echo()","bauxite::action#exec()","bauxite::context#exec_action()","bauxite::context#exec_action_object()","bauxite::context#exec_file()","bauxite::context#exec_parsed_action()","bauxite::actionmodule#execute()","bauxite::context#expand()","bauxite::action#failif()","bauxite::loggers::compositelogger#finalize()","bauxite::loggers::htmllogger#finalize()","bauxite::loggers::nulllogger#finalize()","bauxite::context#find()","bauxite::selectormodule#find()","bauxite::selector#frame()","bauxite::context#get_action()","bauxite::context#get_value()","bauxite::action#js()","bauxite::action#load()","bauxite::context::load_logger()","bauxite::loggers::compositelogger#log()","bauxite::loggers::htmllogger#log()","bauxite::loggers::nulllogger#log()","bauxite::loggers::terminallogger#log()","bauxite::loggers::compositelogger#log_cmd()","bauxite::loggers::echologger#log_cmd()","bauxite::loggers::filelogger#log_cmd()","bauxite::loggers::htmllogger#log_cmd()","bauxite::loggers::nulllogger#log_cmd()","bauxite::loggers::terminallogger#log_cmd()","bauxite::context::loggers()","bauxite::context::max_action_name_size()","bauxite::actionmodule::new()","bauxite::context::new()","bauxite::loggers::compositelogger::new()","bauxite::loggers::filelogger::new()","bauxite::loggers::htmllogger::new()","bauxite::loggers::nulllogger::new()","bauxite::loggers::terminallogger::new()","bauxite::parsermodule::new()","bauxite::selectormodule::new()","bauxite::action#open()","bauxite::action#params()","bauxite::parsermodule#parse()","bauxite::context::parse_action_default()","bauxite::context::parsers()","bauxite::context#print_error()","bauxite::loggers::compositelogger#progress()","bauxite::loggers::nulllogger#progress()","bauxite::loggers::terminallogger#progress()","bauxite::action#replace()","bauxite::action#reset()","bauxite::context#reset_driver()","bauxite::action#return_action()","bauxite::action#ruby()","bauxite::action#select()","bauxite::context::selectors()","bauxite::selectormodule#selenium_find()","bauxite::parser#selenium_ide_html()","bauxite::action#set()","bauxite::action#setif()","bauxite::selector#sid()","bauxite::selector#smart()","bauxite::action#source()","bauxite::context#start()","bauxite::context#stop()","bauxite::action#store()","bauxite::action#submit()","bauxite::action#test()","bauxite::action#tryload()","bauxite::action#wait()","bauxite::context::wait()","bauxite::selector#window()","bauxite::context#with_driver_timeout()","bauxite::context#with_timeout()","bauxite::context#with_vars()","bauxite::action#write()",""],"info":[["Bauxite","","Bauxite.html","","<p>Bauxite Namespace\n"],["Bauxite::Action","","Bauxite/Action.html","","<p>Test action class.\n<p>Test actions are basic test operations that can be combined to create a\ntest case. …\n"],["Bauxite::ActionModule","","Bauxite/ActionModule.html","","<p>Action common state and behavior.\n"],["Bauxite::Application","","Bauxite/Application.html","","<p><code>bauxite</code> command-line program.\n<p>This program executes Bauxite tests and outputs the execution progress and\n…\n"],["Bauxite::Context","","Bauxite/Context.html","","<p>The Main test context. This class includes state and helper functions used\nby clients execute tests and …\n"],["Bauxite::Errors","","Bauxite/Errors.html","","<p>Errors Module\n"],["Bauxite::Errors::AssertionError","","Bauxite/Errors/AssertionError.html","","<p>Error raised when an assertion fails.\n"],["Bauxite::Errors::FileNotFoundError","","Bauxite/Errors/FileNotFoundError.html","","<p>Error raised when an invalid file tried to be loaded.\n"],["Bauxite::Errors::FormatError","","Bauxite/Errors/FormatError.html","","<p>Error raised when trying to process an invalid file format.\n"],["Bauxite::Loggers","","Bauxite/Loggers.html","","<p>Test loggers module\n<p>The default Logger class and all custom loggers must be included in this\nmodule.\n"],["Bauxite::Loggers::CompositeLogger","","Bauxite/Loggers/CompositeLogger.html","","<p>Composite logger.\n<p>This composite logger forwards logging calls to each of its children.\n<p>Set the <code>:loggers</code> …\n"],["Bauxite::Loggers::EchoLogger","","Bauxite/Loggers/EchoLogger.html","","<p>Echo logger.\n<p>This logger outputs the raw action text for every action executed.\n<p>Note that this logger does …\n"],["Bauxite::Loggers::FileLogger","","Bauxite/Loggers/FileLogger.html","","<p>File logger.\n<p>This logger outputs the raw action text for every action executed to the\nfile specified in …\n"],["Bauxite::Loggers::HtmlLogger","","Bauxite/Loggers/HtmlLogger.html","","<p>Echo logger.\n<p>This logger outputs the raw action text for every action executed.\n<p>Note that this logger does …\n"],["Bauxite::Loggers::NullLogger","","Bauxite/Loggers/NullLogger.html","","<p>Test logger class.\n<p>Test loggers handle test output format.\n<p>The default logger does not provide any output …\n"],["Bauxite::Loggers::TerminalLogger","","Bauxite/Loggers/TerminalLogger.html","","<p>Terminal logger.\n<p>This logger outputs text using basic text formatting for a terminal window.\n"],["Bauxite::Loggers::XtermLogger","","Bauxite/Loggers/XtermLogger.html","","<p>XTerm logger.\n<p>This logger outputs colorized lines using xterm (VT100/2) escape sequences.\n"],["Bauxite::Parser","","Bauxite/Parser.html","","<p>Parser class.\n<p>Parser represent different strategies for reading input files into lists of\nBauxite actions. …\n"],["Bauxite::ParserModule","","Bauxite/ParserModule.html","","<p>Parser common state and behavior.\n"],["Bauxite::Selector","","Bauxite/Selector.html","","<p>Selector class.\n<p>Selectors represent different strategies for finding elements. Selenium\nprovides a list …\n"],["Bauxite::SelectorModule","","Bauxite/SelectorModule.html","","<p>Selector common state and behavior.\n"],["_block","Bauxite::Loggers::TerminalLogger","Bauxite/Loggers/TerminalLogger.html#method-i-_block","(color, text, size)","<p>Prints <code>text</code> centered inside a square-bracketed block.\n"],["_cmd_color","Bauxite::Loggers::TerminalLogger","Bauxite/Loggers/TerminalLogger.html#method-i-_cmd_color","(cmd)","<p>Get the color of <code>cmd</code>.\n"],["_fmt","Bauxite::Loggers::TerminalLogger","Bauxite/Loggers/TerminalLogger.html#method-i-_fmt","(color, text, size = 0)","<p>Centers <code>text</code> to a fixed size with.\n"],["_fmt","Bauxite::Loggers::XtermLogger","Bauxite/Loggers/XtermLogger.html#method-i-_fmt","(color, text, size = 0)",""],["_restore_cursor","Bauxite::Loggers::TerminalLogger","Bauxite/Loggers/TerminalLogger.html#method-i-_restore_cursor","()","<p>Restores the cursor to the previously saved cursor position.\n"],["_restore_cursor","Bauxite::Loggers::XtermLogger","Bauxite/Loggers/XtermLogger.html#method-i-_restore_cursor","()",""],["_save_cursor","Bauxite::Loggers::TerminalLogger","Bauxite/Loggers/TerminalLogger.html#method-i-_save_cursor","()","<p>Save the current cursor position,\n"],["_save_cursor","Bauxite::Loggers::XtermLogger","Bauxite/Loggers/XtermLogger.html#method-i-_save_cursor","()",""],["_screen_width","Bauxite::Loggers::TerminalLogger","Bauxite/Loggers/TerminalLogger.html#method-i-_screen_width","()","<p>Returns the terminal screen width.\n"],["_screen_width","Bauxite::Loggers::XtermLogger","Bauxite/Loggers/XtermLogger.html#method-i-_screen_width","()",""],["action_args","Bauxite::Context","Bauxite/Context.html#method-c-action_args","(action)","<p>Returns an array with the names of the arguments of the specified action.\n<p>For example:\n\n<pre>Context::action_args ...</pre>\n"],["actions","Bauxite::Context","Bauxite/Context.html#method-c-actions","()","<p>Returns an array with the names of every action available.\n<p>For example:\n\n<pre class=\"ruby\"><span class=\"ruby-constant\">Context</span><span class=\"ruby-operator\">::</span><span class=\"ruby-identifier\">actions</span>\n<span class=\"ruby-comment\"># =&gt; [ &quot;assert&quot;, ...</span>\n</pre>\n"],["add_alias","Bauxite::Context","Bauxite/Context.html#method-i-add_alias","(name, action, args)","<p>Adds an alias named <code>name</code> to the specified <code>action</code>\nwith the arguments specified in <code>args</code>.\n"],["alias_action","Bauxite::Action","Bauxite/Action.html#method-i-alias_action","(name, action, *args)","<p>Aliases <code>name</code> to <code>action</code> with additional arguments.\n<p>In <code>args</code> the variables <code>${1}</code>..<code>${n}</code>\nwill be expanded to …\n"],["args","Bauxite::ActionModule","Bauxite/ActionModule.html#method-i-args","(quote = false)","<p>Returns the action arguments after applying variable expansion.\n<p>See Context#expand.\n<p>If <code>quote</code> is <code>true</code>, the …\n"],["assert","Bauxite::Action","Bauxite/Action.html#method-i-assert","(selector, text)","<p>Asserts that the value of the selected element matches <code>text</code>.\n<p><code>text</code> is a regular expression. <code>text</code> can be …\n"],["asserth","Bauxite::Action","Bauxite/Action.html#method-i-asserth","(*args)","<p>Replays the current GET request and asserts that the HTTP headers returned\nby that request match each …\n"],["assertv","Bauxite::Action","Bauxite/Action.html#method-i-assertv","(expected, actual)","<p>Asserts that the <code>actual</code> text matches the <code>expected</code>\ntext.\n<p><code>expected</code> can be a regular expression. See #assert …\n"],["assertw","Bauxite::Action","Bauxite/Action.html#method-i-assertw","(count = 1)","<p>Asserts that the number of currently open windows equals\n<code>count</code>.\n<p>For example:\n\n<pre class=\"ruby\"><span class=\"ruby-identifier\">assertw</span>\n<span class=\"ruby-comment\"># =&gt; this assertion ...</span>\n</pre>\n"],["attr","Bauxite::Selector","Bauxite/Selector.html#method-i-attr","(arg, &block)","<p>Select an element by attribute value.\n<p>The attribute selector syntax is:\n\n<pre>attr=name:value</pre>\n"],["break_action","Bauxite::Action","Bauxite/Action.html#method-i-break_action","()","<p>Prompts the user to press ENTER before resuming execution.\n<p>Note that this method provides an action named …\n"],["capture","Bauxite::Action","Bauxite/Action.html#method-i-capture","(file = nil)","<p>Captures a screenshot of the current browser window and saves it with\nspecified <code>file</code> name. If <code>file</code> is …\n"],["click","Bauxite::Action","Bauxite/Action.html#method-i-click","(selector)","<p>Triggers the <code>click</code> event on the selected element.\n<p>For example:\n\n<pre># assuming &lt;button type=&quot;button&quot; id=&quot;btn&quot;&gt;click ...</pre>\n"],["csv","Bauxite::Parser","Bauxite/Parser.html#method-i-csv","(file)","<p>Load CSV files.\n"],["debug","Bauxite::Action","Bauxite/Action.html#method-i-debug","()","<p>Breaks into the debug console.\n<p>In the debug console you can type action strings and test their result. …\n"],["debug","Bauxite::Context","Bauxite/Context.html#method-i-debug","()","<p>Breaks into the debug console.\n<p>For example:\n\n<pre class=\"ruby\"><span class=\"ruby-identifier\">ctx</span>.<span class=\"ruby-identifier\">debug</span>\n<span class=\"ruby-comment\"># =&gt; this breaks into the debug console</span>\n</pre>\n"],["debug_prompt","Bauxite::Loggers::CompositeLogger","Bauxite/Loggers/CompositeLogger.html#method-i-debug_prompt","()","<p>Returns a colorized debug prompt.\n<p>This implementation returns the debug_prompt of the first logger.\n"],["debug_prompt","Bauxite::Loggers::NullLogger","Bauxite/Loggers/NullLogger.html#method-i-debug_prompt","()","<p>Returns the prompt shown by the debug console (see Context#debug).\n<p>For example:\n\n<pre class=\"ruby\"><span class=\"ruby-identifier\">log</span>.<span class=\"ruby-identifier\">debug_prompt</span>\n<span class=\"ruby-comment\"># =&gt; returns ...</span>\n</pre>\n"],["debug_prompt","Bauxite::Loggers::TerminalLogger","Bauxite/Loggers/TerminalLogger.html#method-i-debug_prompt","()","<p>Returns a colorized debug prompt.\n"],["default","Bauxite::Parser","Bauxite/Parser.html#method-i-default","(file, io = nil)","<p>Load default Bauxite files.\n"],["doif","Bauxite::Action","Bauxite/Action.html#method-i-doif","(expected, actual, action, *args)","<p>Executes <code>action</code> only if <code>expected</code> matches\n<code>actual</code>.\n<p>The conditional check in this action is similar to #assertv …\n"],["echo","Bauxite::Action","Bauxite/Action.html#method-i-echo","(text)","<p>Prints the value of the specified <code>text</code>.\n<p><code>text</code> is subject to variable expansion (see Context#expand).\n<p>For …\n"],["exec","Bauxite::Action","Bauxite/Action.html#method-i-exec","(*command)","<p>Executes <code>command</code>, optionally storing the results in a\nvariable.\n<p>If the first argument of <code>command</code> is <code>name=...</code> …\n"],["exec_action","Bauxite::Context","Bauxite/Context.html#method-i-exec_action","(text)","<p>Executes the specified action string handling errors, logging and debug\nhistory.\n<p>If <code>log</code> is <code>true</code>, log the …\n"],["exec_action_object","Bauxite::Context","Bauxite/Context.html#method-i-exec_action_object","(action)","<p>Executes the specified action object injecting built-in variables. Note\nthat the result returned by this …\n"],["exec_file","Bauxite::Context","Bauxite/Context.html#method-i-exec_file","(file)","<p>Executes the specified <code>file</code>.\n<p>For example:\n\n<pre class=\"ruby\"><span class=\"ruby-identifier\">ctx</span>.<span class=\"ruby-identifier\">exec_file</span>(<span class=\"ruby-string\">&#39;file&#39;</span>)\n<span class=\"ruby-comment\"># =&gt; executes every action defined in &#39;file&#39;</span>\n</pre>\n"],["exec_parsed_action","Bauxite::Context","Bauxite/Context.html#method-i-exec_parsed_action","(action, args, log = true, text = nil)","<p>Executes the specified action handling errors, logging and debug history.\n<p>If <code>log</code> is <code>true</code>, log the action …\n"],["execute","Bauxite::ActionModule","Bauxite/ActionModule.html#method-i-execute","()","<p>Executes the action evaluating the arguments in the current context.\n<p>Note that #execute calls #args to …\n"],["expand","Bauxite::Context","Bauxite/Context.html#method-i-expand","(s)","<p>Recursively replaces occurencies of variable expansions in <code>s</code>\nwith the corresponding variable value.\n<p>The …\n"],["failif","Bauxite::Action","Bauxite/Action.html#method-i-failif","(action, *args)","<p>Executes the specified <code>action</code> expected to fail. If\n<code>action</code> succeeds the #failif action fails. If\n<code>action</code> …\n"],["finalize","Bauxite::Loggers::CompositeLogger","Bauxite/Loggers/CompositeLogger.html#method-i-finalize","(ctx)","<p>Completes the log execution.\n"],["finalize","Bauxite::Loggers::HtmlLogger","Bauxite/Loggers/HtmlLogger.html#method-i-finalize","(ctx)","<p>Completes the log execution.\n"],["finalize","Bauxite::Loggers::NullLogger","Bauxite/Loggers/NullLogger.html#method-i-finalize","(ctx)","<p>Completes the log execution.\n"],["find","Bauxite::Context","Bauxite/Context.html#method-i-find","(selector)","<p>Finds an element by <code>selector</code>.\n<p>The element found is yielded to the given <code>block</code> (if any) and\nreturned.\n<p>Note …\n"],["find","Bauxite::SelectorModule","Bauxite/SelectorModule.html#method-i-find","(selector, &block)","<p>Searches for elements using the specified selector string.\n<p>For more information see Context#find.\n<p>Selectors …\n"],["frame","Bauxite::Selector","Bauxite/Selector.html#method-i-frame","(arg, &block)","<p>Change the selector scope to the given frame and finds an element in that\nframe.\n<p>This is a composite selector. …\n"],["get_action","Bauxite::Context","Bauxite/Context.html#method-i-get_action","(action, args, text = nil)","<p>Returns an executable Action object constructed from the specified\narguments resolving action aliases. …\n"],["get_value","Bauxite::Context","Bauxite/Context.html#method-i-get_value","(element)","<p>Returns the value of the specified <code>element</code>.\n<p>This method takes into account the type of element and selectively …\n"],["js","Bauxite::Action","Bauxite/Action.html#method-i-js","(script, name = nil)","<p>Executes the specified Javascript <code>script</code>, optionally storing\nthe results the variable named <code>name</code>.\n<p>Note …\n"],["load","Bauxite::Action","Bauxite/Action.html#method-i-load","(file, *vars)","<p>Load the specified file into an isolated variable context and execute the\nactions specified. If the file …\n"],["load_logger","Bauxite::Context","Bauxite/Context.html#method-c-load_logger","(name, options)","<p>Constructs a Logger instance using <code>name</code> as a hint for the\nlogger type.\n"],["log","Bauxite::Loggers::CompositeLogger","Bauxite/Loggers/CompositeLogger.html#method-i-log","(s, type = :info)","<p>Prints the specified string.\n<p>See Bauxite::Loggers::NullLogger#print\n"],["log","Bauxite::Loggers::HtmlLogger","Bauxite/Loggers/HtmlLogger.html#method-i-log","(s, type = :info)","<p>Logs the specified string.\n<p><code>type</code>, if specified, should be one of <code>:error</code>,\n<code>:warning</code>, <code>:info</code> (default), <code>:debug</code> …\n"],["log","Bauxite::Loggers::NullLogger","Bauxite/Loggers/NullLogger.html#method-i-log","(s, type = :info)","<p>Logs the specified string.\n<p><code>type</code>, if specified, should be one of <code>:error</code>,\n<code>:warning</code>, <code>:info</code> (default), <code>:debug</code> …\n"],["log","Bauxite::Loggers::TerminalLogger","Bauxite/Loggers/TerminalLogger.html#method-i-log","(s, type = :info)","<p>Prints the specified string.\n<p>See Bauxite::Loggers::NullLogger#print\n"],["log_cmd","Bauxite::Loggers::CompositeLogger","Bauxite/Loggers/CompositeLogger.html#method-i-log_cmd","(action, &block)","<p>Pretty prints action information and status.\n<p>This implementation only yileds in the first logger.\n<p>Additional …\n"],["log_cmd","Bauxite::Loggers::EchoLogger","Bauxite/Loggers/EchoLogger.html#method-i-log_cmd","(action)","<p>Echoes the raw action text.\n"],["log_cmd","Bauxite::Loggers::FileLogger","Bauxite/Loggers/FileLogger.html#method-i-log_cmd","(action)","<p>Echoes the raw action text.\n"],["log_cmd","Bauxite::Loggers::HtmlLogger","Bauxite/Loggers/HtmlLogger.html#method-i-log_cmd","(action)","<p>Echoes the raw action text.\n"],["log_cmd","Bauxite::Loggers::NullLogger","Bauxite/Loggers/NullLogger.html#method-i-log_cmd","(action)","<p>Executes the given block in a logging context.\n<p>This default implementation does not provide any logging …\n"],["log_cmd","Bauxite::Loggers::TerminalLogger","Bauxite/Loggers/TerminalLogger.html#method-i-log_cmd","(action)","<p>Pretty prints action information and status.\n"],["loggers","Bauxite::Context","Bauxite/Context.html#method-c-loggers","()","<p>Returns an array with the names of every logger available.\n<p>For example:\n\n<pre class=\"ruby\"><span class=\"ruby-constant\">Context</span><span class=\"ruby-operator\">::</span><span class=\"ruby-identifier\">loggers</span>\n<span class=\"ruby-comment\"># =&gt; [ &quot;null&quot;, ...</span>\n</pre>\n"],["max_action_name_size","Bauxite::Context","Bauxite/Context.html#method-c-max_action_name_size","()","<p>Returns the maximum size in characters of an action name.\n<p>This method is useful to pretty print lists …\n"],["new","Bauxite::ActionModule","Bauxite/ActionModule.html#method-c-new","(ctx, cmd, args, text, file, line)","<p>Constructs a new test action instance.\n"],["new","Bauxite::Context","Bauxite/Context.html#method-c-new","(options)","<p>Constructs a new test context instance.\n<p><code>options</code> is a hash with the following values:\n<p>:driver &mdash; selenium driver …\n"],["new","Bauxite::Loggers::CompositeLogger","Bauxite/Loggers/CompositeLogger.html#method-c-new","(options)","<p>Constructs a new composite logger instance.\n"],["new","Bauxite::Loggers::FileLogger","Bauxite/Loggers/FileLogger.html#method-c-new","(options)","<p>Constructs a new echo logger instance.\n"],["new","Bauxite::Loggers::HtmlLogger","Bauxite/Loggers/HtmlLogger.html#method-c-new","(options)","<p>Constructs a new null logger instance.\n"],["new","Bauxite::Loggers::NullLogger","Bauxite/Loggers/NullLogger.html#method-c-new","(options)","<p>Constructs a new null logger instance.\n"],["new","Bauxite::Loggers::TerminalLogger","Bauxite/Loggers/TerminalLogger.html#method-c-new","(options)","<p>Constructs a new Terminal logger instance.\n"],["new","Bauxite::ParserModule","Bauxite/ParserModule.html#method-c-new","(ctx)","<p>Constructs a new test parser instance.\n"],["new","Bauxite::SelectorModule","Bauxite/SelectorModule.html#method-c-new","(ctx, default_selector)","<p>Constructs a new test selector instance.\n"],["open","Bauxite::Action","Bauxite/Action.html#method-i-open","(url)","<p>Opens the specified <code>url</code> in the browser.\n<p>For example:\n\n<pre class=\"ruby\"><span class=\"ruby-identifier\">open</span> <span class=\"ruby-string\">&quot;http://www.ruby-lang.org&quot;</span>\n<span class=\"ruby-comment\"># =&gt; this would open ...</span>\n</pre>\n"],["params","Bauxite::Action","Bauxite/Action.html#method-i-params","(*vars)","<p>Asserts that the variables named <code>vars</code> are defined and not\nempty.\n<p>For example:\n\n<pre>params host db_name username ...</pre>\n"],["parse","Bauxite::ParserModule","Bauxite/ParserModule.html#method-i-parse","(file)","<p>Parse <code>file</code> and yield the resulting actions.\n"],["parse_action_default","Bauxite::Context","Bauxite/Context.html#method-c-parse_action_default","(text, file = '<unknown>', line = 0)","<p>Default action parsing strategy.\n"],["parsers","Bauxite::Context","Bauxite/Context.html#method-c-parsers","()","<p>Returns an array with the names of every parser available.\n<p>For example:\n\n<pre class=\"ruby\"><span class=\"ruby-constant\">Context</span><span class=\"ruby-operator\">::</span><span class=\"ruby-identifier\">parsers</span>\n<span class=\"ruby-comment\"># =&gt; [ &quot;default&quot;, ...</span>\n</pre>\n"],["print_error","Bauxite::Context","Bauxite/Context.html#method-i-print_error","(e, capture = true)","<p>Prints the specified <code>error</code> using the Logger configured and \nhandling the verbose option.\n<p>For example: …\n"],["progress","Bauxite::Loggers::CompositeLogger","Bauxite/Loggers/CompositeLogger.html#method-i-progress","(value)","<p>Updates action progress.\n"],["progress","Bauxite::Loggers::NullLogger","Bauxite/Loggers/NullLogger.html#method-i-progress","(value)","<p>Updates the progress of the current action.\n"],["progress","Bauxite::Loggers::TerminalLogger","Bauxite/Loggers/TerminalLogger.html#method-i-progress","(value)","<p>Updates action progress.\n"],["replace","Bauxite::Action","Bauxite/Action.html#method-i-replace","(text, pattern, replacement, name)","<p>Replaces the occurrences of <code>pattern</code> in <code>text</code> with\n<code>replacement</code> and assigns the result to the variable named …\n"],["reset","Bauxite::Action","Bauxite/Action.html#method-i-reset","()","<p>Resets the test engine by closing and reopening the browser. As a side\neffect of resetting the test engine, …\n"],["reset_driver","Bauxite::Context","Bauxite/Context.html#method-i-reset_driver","()","<p>Stops the test engine and starts a new engine with the same provider.\n<p>For example:\n\n<pre class=\"ruby\"><span class=\"ruby-identifier\">ctx</span>.<span class=\"ruby-identifier\">reset_driver</span>\n=<span class=\"ruby-operator\">&gt;</span> <span class=\"ruby-operator\">...</span>\n</pre>\n"],["return_action","Bauxite::Action","Bauxite/Action.html#method-i-return_action","(*vars)","<p>Returns the specified variables to the parent scope (if any).\n<p>If <code>vars</code> is <code>*</code> every variable defined in the …\n"],["ruby","Bauxite::Action","Bauxite/Action.html#method-i-ruby","(file, *vars)","<p>Load the specified ruby file into an isolated variable context and execute\nthe ruby code.\n<p><code>file</code> can be …\n"],["select","Bauxite::Action","Bauxite/Action.html#method-i-select","(selector, text)","<p>Sets the value of the selected <code>HTMLSelect</code> to\n<code>text</code>.\n<p><code>text</code> can be the <code>value</code> or the <code>text</code> of\nthe target <code>HTMLOption</code> …\n"],["selectors","Bauxite::Context","Bauxite/Context.html#method-c-selectors","(include_standard_selectors = true)","<p>Returns an array with the names of every selector available.\n<p>If <code>include_standard_selectors</code> is <code>true</code> (default …\n"],["selenium_find","Bauxite::SelectorModule","Bauxite/SelectorModule.html#method-i-selenium_find","(type, selector)","<p>Searches for elements using standard Selenium selectors.\n<p>Selectors calling this method should forward …\n"],["selenium_ide_html","Bauxite::Parser","Bauxite/Parser.html#method-i-selenium_ide_html","(file)","<p>Load Selenium IDE HTML files.\n"],["set","Bauxite::Action","Bauxite/Action.html#method-i-set","(name, value)","<p>Sets the variable named <code>name</code> to the <code>value</code>\nspecified.\n<p>Both <code>name</code> and <code>value</code> are subject to variable\nexpansion …\n"],["setif","Bauxite::Action","Bauxite/Action.html#method-i-setif","(name, value, action, *args)","<p>Sets the variable named <code>name</code> to the <code>value</code>\nspecified only if the. <code>action</code> execution succeeds. If the\nexecution …\n"],["sid","Bauxite::Selector","Bauxite/Selector.html#method-i-sid","(arg, &block)","<p>Select an element by id suffix.\n<p>This is the default selector. Any selector strings that do not contain …\n"],["smart","Bauxite::Selector","Bauxite/Selector.html#method-i-smart","(arg, &block)","<p>Select an element by applying different Selector strategies.\n<p>This selector tries to find elements by using …\n"],["source","Bauxite::Action","Bauxite/Action.html#method-i-source","(text)","<p>Asserts that the page source matches <code>text</code>.\n<p><code>text</code> can be a regular expression. See #assert for more\ndetails. …\n"],["start","Bauxite::Context","Bauxite/Context.html#method-i-start","(actions = [])","<p>Starts the test engine and executes the actions specified. If no action was\nspecified, returns without …\n"],["stop","Bauxite::Context","Bauxite/Context.html#method-i-stop","()","<p>Stops the test engine.\n<p>Calling this method at the end of the test is mandatory if #start was\ncalled without …\n"],["store","Bauxite::Action","Bauxite/Action.html#method-i-store","(selector, name)","<p>Sets the variable named <code>name</code> to the value of the selected\nelement.\n<p><code>name</code> is subject to variable expansion …\n"],["submit","Bauxite::Action","Bauxite/Action.html#method-i-submit","(selector)","<p>Submits the form that contains the selected element.\n<p>For example:\n\n<pre># assuming &lt;form&gt;&lt;input id=&quot;i&quot;/&gt;&lt;/form&gt; ...</pre>\n"],["test","Bauxite::Action","Bauxite/Action.html#method-i-test","(file, name = nil)","<p>Load <code>file</code> using the #load action into a new test context.\n<p>If <code>name</code> is specified, it will be used as the …\n"],["tryload","Bauxite::Action","Bauxite/Action.html#method-i-tryload","(file, *vars)","<p>Load the specified file into an isolated variable context and execute the\nactions specified. If the file …\n"],["wait","Bauxite::Action","Bauxite/Action.html#method-i-wait","(seconds)","<p>Wait for the specified number of <code>seconds</code>.\n<p>For example:\n\n<pre class=\"ruby\"><span class=\"ruby-identifier\">wait</span> <span class=\"ruby-value\">5</span>\n<span class=\"ruby-comment\"># =&gt; this would wait for 5 seconds and then ...</span>\n</pre>\n"],["wait","Bauxite::Context","Bauxite/Context.html#method-c-wait","()","<p>Prompts the user to press ENTER before resuming execution.\n<p>For example:\n\n<pre class=\"ruby\"><span class=\"ruby-constant\">Context</span><span class=\"ruby-operator\">::</span><span class=\"ruby-identifier\">wait</span>\n<span class=\"ruby-comment\"># =&gt; echoes &quot;Press ...</span>\n</pre>\n"],["window","Bauxite::Selector","Bauxite/Selector.html#method-i-window","(arg, &block)","<p>Change the selector scope to the given window and finds an element in that\nwindow.\n<p>This is a composite …\n"],["with_driver_timeout","Bauxite::Context","Bauxite/Context.html#method-i-with_driver_timeout","(timeout)","<p>Executes the given block using the specified driver <code>timeout</code>.\n<p>Note that the driver <code>timeout</code> is the time …\n"],["with_timeout","Bauxite::Context","Bauxite/Context.html#method-i-with_timeout","(*error_types)","<p>Executes the given block retrying for at most <code>${__TIMEOUT__}</code>\nseconds. Note that this method does not …\n"],["with_vars","Bauxite::Context","Bauxite/Context.html#method-i-with_vars","(vars)","<p>Temporarily alter the value of context variables.\n<p>This method alters the value of the variables specified …\n"],["write","Bauxite::Action","Bauxite/Action.html#method-i-write","(selector, text)","<p>Sets the value of the selected element to <code>text</code>.\n<p><code>text</code> is subject to variable expansion (see Context#expand …\n"],["README","","README_md.html","","<p>bauxite\n<p>Bauxite is a façade over Selenium intended for non-developers\n<p>The idea behind this project was …\n"]]}}
@@ -306,11 +306,21 @@
306
306
  &mdash;
307
307
  <span class="container">Bauxite::Action</span>
308
308
 
309
+ <li class="method">
310
+ <a href="Bauxite/Action.html#method-i-asserth">#asserth</a>
311
+ &mdash;
312
+ <span class="container">Bauxite::Action</span>
313
+
309
314
  <li class="method">
310
315
  <a href="Bauxite/Action.html#method-i-assertv">#assertv</a>
311
316
  &mdash;
312
317
  <span class="container">Bauxite::Action</span>
313
318
 
319
+ <li class="method">
320
+ <a href="Bauxite/Action.html#method-i-assertw">#assertw</a>
321
+ &mdash;
322
+ <span class="container">Bauxite::Action</span>
323
+
314
324
  <li class="method">
315
325
  <a href="Bauxite/Selector.html#method-i-attr">#attr</a>
316
326
  &mdash;
@@ -336,15 +346,20 @@
336
346
  &mdash;
337
347
  <span class="container">Bauxite::Parser</span>
338
348
 
349
+ <li class="method">
350
+ <a href="Bauxite/Action.html#method-i-debug">#debug</a>
351
+ &mdash;
352
+ <span class="container">Bauxite::Action</span>
353
+
339
354
  <li class="method">
340
355
  <a href="Bauxite/Context.html#method-i-debug">#debug</a>
341
356
  &mdash;
342
357
  <span class="container">Bauxite::Context</span>
343
358
 
344
359
  <li class="method">
345
- <a href="Bauxite/Action.html#method-i-debug">#debug</a>
360
+ <a href="Bauxite/Loggers/CompositeLogger.html#method-i-debug_prompt">#debug_prompt</a>
346
361
  &mdash;
347
- <span class="container">Bauxite::Action</span>
362
+ <span class="container">Bauxite::Loggers::CompositeLogger</span>
348
363
 
349
364
  <li class="method">
350
365
  <a href="Bauxite/Loggers/NullLogger.html#method-i-debug_prompt">#debug_prompt</a>
@@ -356,11 +371,6 @@
356
371
  &mdash;
357
372
  <span class="container">Bauxite::Loggers::TerminalLogger</span>
358
373
 
359
- <li class="method">
360
- <a href="Bauxite/Loggers/CompositeLogger.html#method-i-debug_prompt">#debug_prompt</a>
361
- &mdash;
362
- <span class="container">Bauxite::Loggers::CompositeLogger</span>
363
-
364
374
  <li class="method">
365
375
  <a href="Bauxite/Parser.html#method-i-default">#default</a>
366
376
  &mdash;
@@ -417,9 +427,9 @@
417
427
  <span class="container">Bauxite::Action</span>
418
428
 
419
429
  <li class="method">
420
- <a href="Bauxite/Loggers/HtmlLogger.html#method-i-finalize">#finalize</a>
430
+ <a href="Bauxite/Loggers/CompositeLogger.html#method-i-finalize">#finalize</a>
421
431
  &mdash;
422
- <span class="container">Bauxite::Loggers::HtmlLogger</span>
432
+ <span class="container">Bauxite::Loggers::CompositeLogger</span>
423
433
 
424
434
  <li class="method">
425
435
  <a href="Bauxite/Loggers/NullLogger.html#method-i-finalize">#finalize</a>
@@ -427,9 +437,9 @@
427
437
  <span class="container">Bauxite::Loggers::NullLogger</span>
428
438
 
429
439
  <li class="method">
430
- <a href="Bauxite/Loggers/CompositeLogger.html#method-i-finalize">#finalize</a>
440
+ <a href="Bauxite/Loggers/HtmlLogger.html#method-i-finalize">#finalize</a>
431
441
  &mdash;
432
- <span class="container">Bauxite::Loggers::CompositeLogger</span>
442
+ <span class="container">Bauxite::Loggers::HtmlLogger</span>
433
443
 
434
444
  <li class="method">
435
445
  <a href="Bauxite/Context.html#method-i-find">#find</a>
@@ -467,9 +477,9 @@
467
477
  <span class="container">Bauxite::Action</span>
468
478
 
469
479
  <li class="method">
470
- <a href="Bauxite/Loggers/HtmlLogger.html#method-i-log">#log</a>
480
+ <a href="Bauxite/Loggers/CompositeLogger.html#method-i-log">#log</a>
471
481
  &mdash;
472
- <span class="container">Bauxite::Loggers::HtmlLogger</span>
482
+ <span class="container">Bauxite::Loggers::CompositeLogger</span>
473
483
 
474
484
  <li class="method">
475
485
  <a href="Bauxite/Loggers/TerminalLogger.html#method-i-log">#log</a>
@@ -477,9 +487,9 @@
477
487
  <span class="container">Bauxite::Loggers::TerminalLogger</span>
478
488
 
479
489
  <li class="method">
480
- <a href="Bauxite/Loggers/CompositeLogger.html#method-i-log">#log</a>
490
+ <a href="Bauxite/Loggers/HtmlLogger.html#method-i-log">#log</a>
481
491
  &mdash;
482
- <span class="container">Bauxite::Loggers::CompositeLogger</span>
492
+ <span class="container">Bauxite::Loggers::HtmlLogger</span>
483
493
 
484
494
  <li class="method">
485
495
  <a href="Bauxite/Loggers/NullLogger.html#method-i-log">#log</a>
@@ -487,24 +497,24 @@
487
497
  <span class="container">Bauxite::Loggers::NullLogger</span>
488
498
 
489
499
  <li class="method">
490
- <a href="Bauxite/Loggers/FileLogger.html#method-i-log_cmd">#log_cmd</a>
500
+ <a href="Bauxite/Loggers/EchoLogger.html#method-i-log_cmd">#log_cmd</a>
491
501
  &mdash;
492
- <span class="container">Bauxite::Loggers::FileLogger</span>
502
+ <span class="container">Bauxite::Loggers::EchoLogger</span>
493
503
 
494
504
  <li class="method">
495
- <a href="Bauxite/Loggers/EchoLogger.html#method-i-log_cmd">#log_cmd</a>
505
+ <a href="Bauxite/Loggers/TerminalLogger.html#method-i-log_cmd">#log_cmd</a>
496
506
  &mdash;
497
- <span class="container">Bauxite::Loggers::EchoLogger</span>
507
+ <span class="container">Bauxite::Loggers::TerminalLogger</span>
498
508
 
499
509
  <li class="method">
500
- <a href="Bauxite/Loggers/CompositeLogger.html#method-i-log_cmd">#log_cmd</a>
510
+ <a href="Bauxite/Loggers/FileLogger.html#method-i-log_cmd">#log_cmd</a>
501
511
  &mdash;
502
- <span class="container">Bauxite::Loggers::CompositeLogger</span>
512
+ <span class="container">Bauxite::Loggers::FileLogger</span>
503
513
 
504
514
  <li class="method">
505
- <a href="Bauxite/Loggers/TerminalLogger.html#method-i-log_cmd">#log_cmd</a>
515
+ <a href="Bauxite/Loggers/CompositeLogger.html#method-i-log_cmd">#log_cmd</a>
506
516
  &mdash;
507
- <span class="container">Bauxite::Loggers::TerminalLogger</span>
517
+ <span class="container">Bauxite::Loggers::CompositeLogger</span>
508
518
 
509
519
  <li class="method">
510
520
  <a href="Bauxite/Loggers/HtmlLogger.html#method-i-log_cmd">#log_cmd</a>
@@ -536,6 +546,11 @@
536
546
  &mdash;
537
547
  <span class="container">Bauxite::Context</span>
538
548
 
549
+ <li class="method">
550
+ <a href="Bauxite/Loggers/NullLogger.html#method-i-progress">#progress</a>
551
+ &mdash;
552
+ <span class="container">Bauxite::Loggers::NullLogger</span>
553
+
539
554
  <li class="method">
540
555
  <a href="Bauxite/Loggers/CompositeLogger.html#method-i-progress">#progress</a>
541
556
  &mdash;
@@ -546,11 +561,6 @@
546
561
  &mdash;
547
562
  <span class="container">Bauxite::Loggers::TerminalLogger</span>
548
563
 
549
- <li class="method">
550
- <a href="Bauxite/Loggers/NullLogger.html#method-i-progress">#progress</a>
551
- &mdash;
552
- <span class="container">Bauxite::Loggers::NullLogger</span>
553
-
554
564
  <li class="method">
555
565
  <a href="Bauxite/Action.html#method-i-replace">#replace</a>
556
566
  &mdash;
@@ -651,6 +661,11 @@
651
661
  &mdash;
652
662
  <span class="container">Bauxite::Action</span>
653
663
 
664
+ <li class="method">
665
+ <a href="Bauxite/Selector.html#method-i-window">#window</a>
666
+ &mdash;
667
+ <span class="container">Bauxite::Selector</span>
668
+
654
669
  <li class="method">
655
670
  <a href="Bauxite/Context.html#method-i-with_driver_timeout">#with_driver_timeout</a>
656
671
  &mdash;
@@ -0,0 +1,60 @@
1
+ #--
2
+ # Copyright (c) 2014 Patricio Zavolinsky
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ # of this software and associated documentation files (the "Software"), to deal
6
+ # in the Software without restriction, including without limitation the rights
7
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ # copies of the Software, and to permit persons to whom the Software is
9
+ # furnished to do so, subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in
12
+ # all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ # SOFTWARE.
21
+ #++
22
+ require 'net/http'
23
+
24
+ class Bauxite::Action
25
+ # Replays the current GET request and asserts that the HTTP headers
26
+ # returned by that request match each of the +args+ specified.
27
+ #
28
+ # Note that this action results in an additional HTTP GET request to
29
+ # the current browser url.
30
+ #
31
+ # The syntax of +args+ is:
32
+ # "header_name1=expression1" "header_name2=expression2" ...
33
+ #
34
+ # Where +expression+ is a regular expression. Note that multiple
35
+ # headers can be asserted in a single #asserth call. Also note that
36
+ # if the same header is specified more than once, the value of the
37
+ # header must match every expression specified.
38
+ #
39
+ # For example:
40
+ # # assuming response headers { 'Content-Type' => 'text/plain' }
41
+ # asserth "content-type=plain"
42
+ # asserth "content-type=^text" "content-type=/plain$"
43
+ # # => these assertions would pass
44
+ #
45
+ # :category: Action Methods
46
+ def asserth(*args)
47
+ uri = URI(@ctx.driver.current_url)
48
+ res = Net::HTTP.get_response(uri)
49
+ args.each do |a|
50
+ name,value = a.split('=', 2);
51
+ name = name.strip.downcase
52
+ value = value.strip
53
+
54
+ actual = res[name] || ''
55
+ unless actual =~ _pattern(value)
56
+ raise Bauxite::Errors::AssertionError, "Assertion failed for HTTP Header '#{name}': expected '#{value}', got '#{actual}'"
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,47 @@
1
+ #--
2
+ # Copyright (c) 2014 Patricio Zavolinsky
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ # of this software and associated documentation files (the "Software"), to deal
6
+ # in the Software without restriction, including without limitation the rights
7
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ # copies of the Software, and to permit persons to whom the Software is
9
+ # furnished to do so, subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in
12
+ # all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ # SOFTWARE.
21
+ #++
22
+
23
+ class Bauxite::Action
24
+ # Asserts that the number of currently open windows equals +count+.
25
+ #
26
+ # For example:
27
+ # assertw
28
+ # # => this assertion would pass (only the main window is open)
29
+ #
30
+ # js "window.w = window.open()"
31
+ # assertw 2
32
+ # # => this assertion would pass (main window and popup)
33
+ #
34
+ # js "setTimeout(function() { window.w.close(); }, 3000);"
35
+ # assertw 1
36
+ # # => this assertion would pass (popup was closed)
37
+ #
38
+ # :category: Action Methods
39
+ def assertw(count = 1)
40
+ @ctx.with_timeout Bauxite::Errors::AssertionError do
41
+ unless @ctx.driver.window_handles.size == count.to_i
42
+ raise Bauxite::Errors::AssertionError, "Assertion failed: all popups must be closed."
43
+ end
44
+ true
45
+ end
46
+ end
47
+ end
@@ -30,6 +30,12 @@ class Bauxite::Loggers::CompositeLogger
30
30
 
31
31
  # Constructs a new composite logger instance.
32
32
  def initialize(options)
33
+ unless options[:loggers]
34
+ raise ArgumentError, "Missing required logger option 'loggers'. "+
35
+ "The value of this option is a comma-separated list of valid loggers. "+
36
+ "For example loggers=xterm,file."
37
+ end
38
+
33
39
  @loggers = options[:loggers].split(',').map do |l|
34
40
  Bauxite::Context::load_logger(l, options)
35
41
  end
@@ -42,7 +42,7 @@ class Bauxite::Parser
42
42
  .select { |match| match }
43
43
  .map { |match| match.captures }
44
44
  .map do |action|
45
- case action[0]
45
+ case action[0].downcase
46
46
  when 'open'
47
47
  url = action[1]
48
48
  url = url[1..-1] if url[0] == '/' and base_ends_in_slash # remove leading '/'
@@ -50,21 +50,24 @@ class Bauxite::Parser
50
50
  when 'type'
51
51
  action[0] = 'write'
52
52
  action[1] = _selenium_ide_html_parse_selector(action[1])
53
- when 'verifyTextPresent'
53
+ when 'verifytextpresent'
54
54
  action[0] = 'source'
55
- when 'clickAndWait', 'click'
55
+ when 'clickandwait', 'click'
56
56
  action[0] = 'click'
57
57
  action[1] = _selenium_ide_html_parse_selector(action[1])
58
- when 'waitForPageToLoad'
58
+ when 'waitforpagetoload'
59
59
  action[0] = 'wait'
60
60
  action[1] = (action[1].to_i / 1000).to_s
61
- when 'assertValue'
61
+ when 'assertvalue'
62
62
  action[0] = 'assert'
63
63
  action[1] = _selenium_ide_html_parse_selector(action[1])
64
+ when 'waitforpopup'
65
+ action = [] # remove
64
66
  end
65
67
  action = action.select { |a| a != '' }
66
68
  [ action[0], action[1..-1], nil, 0 ]
67
69
  end
70
+ .select { |a| a[0] }
68
71
  end
69
72
  end
70
73
 
@@ -0,0 +1,73 @@
1
+ #--
2
+ # Copyright (c) 2014 Patricio Zavolinsky
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ # of this software and associated documentation files (the "Software"), to deal
6
+ # in the Software without restriction, including without limitation the rights
7
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ # copies of the Software, and to permit persons to whom the Software is
9
+ # furnished to do so, subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in
12
+ # all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ # SOFTWARE.
21
+ #++
22
+
23
+ class Bauxite::Selector
24
+ # Change the selector scope to the given window and finds an element in that
25
+ # window.
26
+ #
27
+ # This is a composite selector. The window selector syntax is:
28
+ # window=|window_name|child_selector
29
+ #
30
+ # Where +window_name+ is the name or url pattern of the target window,
31
+ # +child_selector+ is any selector available that matches the target
32
+ # element inside the target window.
33
+ #
34
+ # Note that the '|' character can be replaced with any single-character
35
+ # delimiter.
36
+ #
37
+ # For example:
38
+ # # assuming <div id='label'>hello!</div> in popup.html
39
+ # js "window.w = window.open('popup.html', 'mypopup')"
40
+ # assert "window=|mypopup|label" "hello!"
41
+ # # => this assertion would pass
42
+ #
43
+ # :category: Selector Methods
44
+ def window(arg, &block)
45
+ delimiter = arg[0]
46
+ name,child = arg[1..-1].split(delimiter, 2)
47
+ current = @ctx.driver.window_handle
48
+ begin
49
+ window_name = name
50
+ unless @ctx.driver.window_handles.include? name
51
+ if name =~ /^\/.*\/[imxo]*$/
52
+ name = eval(name)
53
+ else
54
+ name = /#{name}/
55
+ end
56
+
57
+ name = @ctx.driver.window_handles.find do |h|
58
+ @ctx.driver.switch_to.window h
59
+ @ctx.driver.current_url =~ name
60
+ end
61
+ end
62
+
63
+ unless name
64
+ raise Bauxite::Errors::AssertionError, "Cannot find a window matching '#{window_name}' (either by name exact match or by url regex)."
65
+ end
66
+
67
+ @ctx.driver.switch_to.window name
68
+ find(child, &block)
69
+ ensure
70
+ @ctx.driver.switch_to.window current
71
+ end
72
+ end
73
+ end
data/lib/bauxite.rb CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  #--
24
24
  module Bauxite
25
- VERSION = "0.6.3"
25
+ VERSION = "0.6.4"
26
26
  end
27
27
  #++
28
28
 
data/test/asserth.bxt ADDED
@@ -0,0 +1,2 @@
1
+ open "https://www.ruby-lang.org"
2
+ asserth "content-type=html" "content-length=^\d+$"
data/test/assertw.bxt ADDED
@@ -0,0 +1,7 @@
1
+ assertw
2
+
3
+ js "window.w = window.open()"
4
+ assertw 2
5
+
6
+ js "setTimeout(function() { window.w.close(); }, 3000);"
7
+ assertw 1
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bauxite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.3
4
+ version: 0.6.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patricio Zavolinsky
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-05 00:00:00.000000000 Z
11
+ date: 2014-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: selenium-webdriver
@@ -119,7 +119,9 @@ files:
119
119
  - lib/bauxite.rb
120
120
  - lib/bauxite/actions/alias.rb
121
121
  - lib/bauxite/actions/assert.rb
122
+ - lib/bauxite/actions/asserth.rb
122
123
  - lib/bauxite/actions/assertv.rb
124
+ - lib/bauxite/actions/assertw.rb
123
125
  - lib/bauxite/actions/break.rb
124
126
  - lib/bauxite/actions/capture.rb
125
127
  - lib/bauxite/actions/click.rb
@@ -166,8 +168,11 @@ files:
166
168
  - lib/bauxite/selectors/frame.rb
167
169
  - lib/bauxite/selectors/sid.rb
168
170
  - lib/bauxite/selectors/smart.rb
171
+ - lib/bauxite/selectors/window.rb
169
172
  - test/alias.bxt
173
+ - test/asserth.bxt
170
174
  - test/assertv.bxt
175
+ - test/assertw.bxt
171
176
  - test/capture.bxt.manual
172
177
  - test/capture/my_test.bxt
173
178
  - test/capture/page.html