Module: Celerity::Container

Includes:
Exception, ShortInspect
Included in:
Browser, Element, Form, Frame, Table, TableCell
Defined in:
lib/celerity/container.rb,
lib/celerity/watir_compatibility.rb

Overview

This class contains methods for accessing elements inside a container, usually the Browser object, meaning the current page. The most common syntax is

browser.elem(:attribute, 'value')

Note that the element is located lazily, so no exceptions will be raised if the element doesn’t exist until you call a method on the resulting object. To do this you would normally use Element#exists? or an action method, like ClickableElement#click. You can also pass in a hash:

browser.link(:index => 1).click

All elements support multiple attributes identification using the hash syntax (though this might not always be compatible with Watir):

browser.span(:class_name => 'product', :index => 5).text

Checkboxes and radio buttons support a special three-argument syntax:

browser.check_box(:name, 'a_name', '1234').set

You can also get all the elements of a certain type by using the plural form (@see Celerity::ElementCollection):

browser.links # => #<Celerity::Links:0x7a1c2da2 ...>

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from ShortInspect

#short_inspect

Instance Attribute Details

#browserObject (readonly)

Points back to the Browser instance that contains this element



36
37
38
# File 'lib/celerity/container.rb', line 36

def browser
  @browser
end

Instance Method Details

#area(*args) ⇒ Celerity::Area

Returns:



86
87
88
# File 'lib/celerity/container.rb', line 86

def area(*args)
  Area.new(self, *args)
end

#areasCelerity::Areas

Returns:



94
95
96
# File 'lib/celerity/container.rb', line 94

def areas
  Areas.new(self)
end

#button(*args) ⇒ Celerity::Button

Returns:



102
103
104
# File 'lib/celerity/container.rb', line 102

def button(*args)
  Button.new(self, *args)
end

#buttonsCelerity::Buttons

Returns:



110
111
112
# File 'lib/celerity/container.rb', line 110

def buttons
  Buttons.new(self)
end

#cell(*args) ⇒ Celerity::TableCell Also known as: td

Returns:



118
119
120
# File 'lib/celerity/container.rb', line 118

def cell(*args)
  TableCell.new(self, *args)
end

#cellsCelerity::TableCells Also known as: tds



127
128
129
# File 'lib/celerity/container.rb', line 127

def cells
  TableCells.new(self)
end

#check_box(*args) ⇒ Celerity::CheckBox Also known as: checkbox, checkBox

Since finding checkboxes by value is very common, you can use this shorthand:

browser.check_box(:name, 'a_name', '1234').set

or

browser.check_box(:name => 'a_name', :value => '1234').set

Returns:



144
145
146
# File 'lib/celerity/container.rb', line 144

def check_box(*args)
  CheckBox.new(self, *args)
end

#checkboxesCelerity::CheckBoxes



152
153
154
# File 'lib/celerity/container.rb', line 152

def checkboxes
  CheckBoxes.new(self)
end

#container=(container) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Used internally to update the container object.



72
73
74
75
76
# File 'lib/celerity/container.rb', line 72

def container=(container)
  @container = container
  @browser = container.browser
  container
end

#contains_text(expected_text) ⇒ Fixnum?

Check if the element contains the given text.

Parameters:

  • expected_text (String, Regexp)

    The text to look for.

Returns:

  • (Fixnum, nil)

    The index of the matched text, or nil if it doesn’t match.



45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/celerity/container.rb', line 45

def contains_text(expected_text)
  assert_exists
  return nil unless respond_to? :text

  case expected_text
  when Regexp
    text() =~ expected_text
  when String
    text().index(expected_text)
  else
    raise TypeError, "expected String or Regexp, got #{expected_text.inspect}:#{expected_text.class}"
  end
end

#dd(*args) ⇒ Celerity::Dd

Returns:



160
161
162
# File 'lib/celerity/container.rb', line 160

def dd(*args)
  Dd.new(self, *args)
end

#ddsCelerity::Dds

Returns:



168
169
170
# File 'lib/celerity/container.rb', line 168

def dds
  Dds.new(self)
end

#del(*args) ⇒ Celerity::Del

Returns:



176
177
178
# File 'lib/celerity/container.rb', line 176

def del(*args)
  Del.new(self, *args)
end

#delsCelerity::Dels

Returns:



184
185
186
# File 'lib/celerity/container.rb', line 184

def dels
  Dels.new(self)
end

#div(*args) ⇒ Celerity::Div

Returns:



192
193
194
# File 'lib/celerity/container.rb', line 192

def div(*args)
  Div.new(self, *args)
end

#divsCelerity::Divs

Returns:



200
201
202
# File 'lib/celerity/container.rb', line 200

def divs
  Divs.new(self)
end

#dl(*args) ⇒ Celerity::Dl

Returns:



208
209
210
# File 'lib/celerity/container.rb', line 208

def dl(*args)
  Dl.new(self, *args)
end

#dlsCelerity::Dls

Returns:



216
217
218
# File 'lib/celerity/container.rb', line 216

def dls
  Dls.new(self)
end

#dt(*args) ⇒ Celerity::Dt

Returns:



224
225
226
# File 'lib/celerity/container.rb', line 224

def dt(*args)
  Dt.new(self, *args)
end

#dtsCelerity::Dts

Returns:



232
233
234
# File 'lib/celerity/container.rb', line 232

def dts
  Dts.new(self)
end

#em(*args) ⇒ Celerity::Em

Returns:



240
241
242
# File 'lib/celerity/container.rb', line 240

def em(*args)
  Em.new(self, *args)
end

#emsCelerity::Ems

Returns:



248
249
250
# File 'lib/celerity/container.rb', line 248

def ems
  Ems.new(self)
end

#file_field(*args) ⇒ Celerity::FileField

Returns:



256
257
258
# File 'lib/celerity/container.rb', line 256

def file_field(*args)
  FileField.new(self, *args)
end

#file_fieldsCelerity::FileFields



264
265
266
# File 'lib/celerity/container.rb', line 264

def file_fields
  FileFields.new(self)
end

#form(*args) ⇒ Celerity::Form

Returns:



272
273
274
# File 'lib/celerity/container.rb', line 272

def form(*args)
  Form.new(self, *args)
end

#formsCelerity::Forms

Returns:



280
281
282
# File 'lib/celerity/container.rb', line 280

def forms
  Forms.new(self)
end

#frame(*args) ⇒ Celerity::Frame

Returns:



288
289
290
# File 'lib/celerity/container.rb', line 288

def frame(*args)
  Frame.new(self, *args)
end

#framesCelerity::Frames

Returns:



296
297
298
# File 'lib/celerity/container.rb', line 296

def frames
  Frames.new(self)
end

#h1(*args) ⇒ Celerity::H1

Returns:



304
305
306
# File 'lib/celerity/container.rb', line 304

def h1(*args)
  H1.new(self, *args)
end

#h1sCelerity::H1s

Returns:



312
313
314
# File 'lib/celerity/container.rb', line 312

def h1s
  H1s.new(self)
end

#h2(*args) ⇒ Celerity::H2

Returns:



320
321
322
# File 'lib/celerity/container.rb', line 320

def h2(*args)
  H2.new(self, *args)
end

#h2sCelerity::H2s

Returns:



328
329
330
# File 'lib/celerity/container.rb', line 328

def h2s
  H2s.new(self)
end

#h3(*args) ⇒ Celerity::H3

Returns:



336
337
338
# File 'lib/celerity/container.rb', line 336

def h3(*args)
  H3.new(self, *args)
end

#h3sCelerity::H3s

Returns:



344
345
346
# File 'lib/celerity/container.rb', line 344

def h3s
  H3s.new(self)
end

#h4(*args) ⇒ Celerity::H4

Returns:



352
353
354
# File 'lib/celerity/container.rb', line 352

def h4(*args)
  H4.new(self, *args)
end

#h4sCelerity::H4s

Returns:



360
361
362
# File 'lib/celerity/container.rb', line 360

def h4s
  H4s.new(self)
end

#h5(*args) ⇒ Celerity::H5

Returns:



368
369
370
# File 'lib/celerity/container.rb', line 368

def h5(*args)
  H5.new(self, *args)
end

#h5sCelerity::H5s

Returns:



376
377
378
# File 'lib/celerity/container.rb', line 376

def h5s
  H5s.new(self)
end

#h6(*args) ⇒ Celerity::H6

Returns:



384
385
386
# File 'lib/celerity/container.rb', line 384

def h6(*args)
  H6.new(self, *args)
end

#h6sCelerity::H6s

Returns:



392
393
394
# File 'lib/celerity/container.rb', line 392

def h6s
  H6s.new(self)
end

#hidden(*args) ⇒ Celerity::Hidden

Returns:



400
401
402
# File 'lib/celerity/container.rb', line 400

def hidden(*args)
  Hidden.new(self, *args)
end

#hiddensCelerity::Hiddens

Returns:



408
409
410
# File 'lib/celerity/container.rb', line 408

def hiddens
  Hiddens.new(self)
end

#image(*args) ⇒ Celerity::Image

Returns:



433
434
435
# File 'lib/celerity/container.rb', line 433

def image(*args)
  Image.new(self, *args)
end

#imagesCelerity::Images

Returns:



441
442
443
# File 'lib/celerity/container.rb', line 441

def images
  Images.new(self)
end

#ins(*args) ⇒ Celerity::Ins

Returns:



416
417
418
# File 'lib/celerity/container.rb', line 416

def ins(*args)
  Ins.new(self, *args)
end

#inses(*args) ⇒ Celerity::Inses

Returns:



424
425
426
# File 'lib/celerity/container.rb', line 424

def inses(*args)
  Inses.new(self, *args)
end

#inspectObject

Override inspect for readability



63
64
65
# File 'lib/celerity/container.rb', line 63

def inspect
  short_inspect :include => %w[@conditions @object]
end

#label(*args) ⇒ Celerity::Label

Returns:



449
450
451
# File 'lib/celerity/container.rb', line 449

def label(*args)
  Label.new(self, *args)
end

#labelsCelerity::Labels

Returns:



457
458
459
# File 'lib/celerity/container.rb', line 457

def labels
  Labels.new(self)
end

#li(*args) ⇒ Celerity::Li

Returns:



465
466
467
# File 'lib/celerity/container.rb', line 465

def li(*args)
  Li.new(self, *args)
end

Returns:



481
482
483
# File 'lib/celerity/container.rb', line 481

def link(*args)
  Link.new(self, *args)
end

Returns:



489
490
491
# File 'lib/celerity/container.rb', line 489

def links
  Links.new(self)
end

#lisCelerity::Lis

Returns:



473
474
475
# File 'lib/celerity/container.rb', line 473

def lis
  Lis.new(self)
end

#map(*args) ⇒ Celerity::Map

Returns:



497
498
499
# File 'lib/celerity/container.rb', line 497

def map(*args)
  Map.new(self, *args)
end

#mapsCelerity::Maps

Returns:



505
506
507
# File 'lib/celerity/container.rb', line 505

def maps
  Maps.new(self)
end

#meta(*args) ⇒ Celerity::Meta

Returns:



513
514
515
# File 'lib/celerity/container.rb', line 513

def meta(*args)
  Meta.new(self, *args)
end

#metas(*args) ⇒ Celerity::Metas

Returns:



521
522
523
# File 'lib/celerity/container.rb', line 521

def metas(*args)
  Metas.new(self, *args)
end

#ol(*args) ⇒ Celerity::Ol

Returns:



529
530
531
# File 'lib/celerity/container.rb', line 529

def ol(*args)
  Ol.new(self, *args)
end

#olsCelerity::Ols

Returns:



537
538
539
# File 'lib/celerity/container.rb', line 537

def ols
  Ols.new(self)
end

#option(*args) ⇒ Celerity::Option

Returns:



545
546
547
# File 'lib/celerity/container.rb', line 545

def option(*args)
  Option.new(self, *args)
end

#p(*args) ⇒ Celerity::P

Returns:



553
554
555
# File 'lib/celerity/container.rb', line 553

def p(*args)
  P.new(self, *args)
end

#pre(*args) ⇒ Celerity::Pre

Returns:



569
570
571
# File 'lib/celerity/container.rb', line 569

def pre(*args)
  Pre.new(self, *args)
end

#presCelerity::Pres

Returns:



577
578
579
# File 'lib/celerity/container.rb', line 577

def pres
  Pres.new(self)
end

#psCelerity::Ps

Returns:



561
562
563
# File 'lib/celerity/container.rb', line 561

def ps
  Ps.new(self)
end

#radio(*args) ⇒ Celerity::Radio

Since finding radios by value is very common, you can use this shorthand:

browser.radio(:name, 'a_name', '1234').set

or

browser.radio(:name => 'a_name', :value => '1234').set

Returns:



593
594
595
# File 'lib/celerity/container.rb', line 593

def radio(*args)
  Radio.new(self, *args)
end

#radiosCelerity::Radios

Returns:



601
602
603
# File 'lib/celerity/container.rb', line 601

def radios
  Radios.new(self)
end

#row(*args) ⇒ Celerity::TableRow

Returns:



609
610
611
# File 'lib/celerity/container.rb', line 609

def row(*args)
  TableRow.new(self, *args)
end

#rowsCelerity::TableRows

Returns:



617
618
619
# File 'lib/celerity/container.rb', line 617

def rows
  TableRows.new(self)
end

#select_list(*args) ⇒ Celerity::SelectList



625
626
627
# File 'lib/celerity/container.rb', line 625

def select_list(*args)
  SelectList.new(self, *args)
end

#select_listsCelerity::SelectLists



633
634
635
# File 'lib/celerity/container.rb', line 633

def select_lists
  SelectLists.new(self)
end

#span(*args) ⇒ Celerity::Span

Returns:



641
642
643
# File 'lib/celerity/container.rb', line 641

def span(*args)
  Span.new(self, *args)
end

#spansCelerity::Spans

Returns:



649
650
651
# File 'lib/celerity/container.rb', line 649

def spans
  Spans.new(self)
end

#strong(*args) ⇒ Celerity::Spans

Returns:



657
658
659
# File 'lib/celerity/container.rb', line 657

def strong(*args)
  Strong.new(self, *args)
end

#strongsCelerity::Strongs

Returns:



665
666
667
# File 'lib/celerity/container.rb', line 665

def strongs
  Strongs.new(self)
end

#table(*args) ⇒ Celerity::Table

Returns:



673
674
675
# File 'lib/celerity/container.rb', line 673

def table(*args)
  Table.new(self, *args)
end

#tablesCelerity::Tables

Returns:



681
682
683
# File 'lib/celerity/container.rb', line 681

def tables
  Tables.new(self)
end

#tbodiesCelerity::TableBodies Also known as: bodies



697
698
699
# File 'lib/celerity/container.rb', line 697

def tbodies
  TableBodies.new(self)
end

#tbody(*args) ⇒ Celerity::TableBody Also known as: body

Returns:



689
690
691
# File 'lib/celerity/container.rb', line 689

def tbody(*args)
  TableBody.new(self, *args)
end

#text_field(*args) ⇒ Celerity::TextField

Returns:



705
706
707
# File 'lib/celerity/container.rb', line 705

def text_field(*args)
  TextField.new(self, *args)
end

#text_fieldsCelerity::TextFields



713
714
715
# File 'lib/celerity/container.rb', line 713

def text_fields
  TextFields.new(self)
end

#tfoot(*args) ⇒ Celerity::TableFooter



721
722
723
# File 'lib/celerity/container.rb', line 721

def tfoot(*args)
  TableFooter.new(self, *args)
end

#tfootsCelerity::TableFooters Also known as: tfeet



729
730
731
# File 'lib/celerity/container.rb', line 729

def tfoots
  TableFooters.new(self)
end

#th(*args) ⇒ Celerity::Th

Watir’s cells() won’t find <th> elements. This is a workaround.

Returns:



741
742
743
# File 'lib/celerity/container.rb', line 741

def th(*args)
  Th.new(self, *args)
end

#thead(*args) ⇒ Celerity::TableHeader



758
759
760
# File 'lib/celerity/container.rb', line 758

def thead(*args)
  TableHeader.new(self, *args)
end

#theadsCelerity::TableHeaders



766
767
768
# File 'lib/celerity/container.rb', line 766

def theads
  TableHeaders.new(self)
end

#thsObject

FIXME: implement or change api,

Raises:

  • (NotImplementedError)

See Also:



750
751
752
# File 'lib/celerity/container.rb', line 750

def ths
  raise NotImplementedError
end

#ul(*args) ⇒ Celerity::Ul

Returns:



774
775
776
# File 'lib/celerity/container.rb', line 774

def ul(*args)
  Ul.new(self, *args)
end

#ulsCelerity::Uls

Returns:



782
783
784
# File 'lib/celerity/container.rb', line 782

def uls
  Uls.new(self)
end