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



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

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

#areasCelerity::Areas



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

def areas
  Areas.new(self)
end

#button(*args) ⇒ Celerity::Button



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

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

#buttonsCelerity::Buttons



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

def buttons
  Buttons.new(self)
end

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



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


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.



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



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

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

#ddsCelerity::Dds



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

def dds
  Dds.new(self)
end

#del(*args) ⇒ Celerity::Del



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

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

#delsCelerity::Dels



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

def dels
  Dels.new(self)
end

#div(*args) ⇒ Celerity::Div



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

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

#divsCelerity::Divs



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

def divs
  Divs.new(self)
end

#dl(*args) ⇒ Celerity::Dl



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

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

#dlsCelerity::Dls



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

def dls
  Dls.new(self)
end

#dt(*args) ⇒ Celerity::Dt



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

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

#dtsCelerity::Dts



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

def dts
  Dts.new(self)
end

#em(*args) ⇒ Celerity::Em



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

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

#emsCelerity::Ems



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

def ems
  Ems.new(self)
end

#file_field(*args) ⇒ Celerity::FileField



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



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

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

#formsCelerity::Forms



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

def forms
  Forms.new(self)
end

#frame(*args) ⇒ Celerity::Frame



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

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

#framesCelerity::Frames



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

def frames
  Frames.new(self)
end

#h1(*args) ⇒ Celerity::H1



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

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

#h1sCelerity::H1s



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

def h1s
  H1s.new(self)
end

#h2(*args) ⇒ Celerity::H2



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

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

#h2sCelerity::H2s



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

def h2s
  H2s.new(self)
end

#h3(*args) ⇒ Celerity::H3



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

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

#h3sCelerity::H3s



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

def h3s
  H3s.new(self)
end

#h4(*args) ⇒ Celerity::H4



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

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

#h4sCelerity::H4s



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

def h4s
  H4s.new(self)
end

#h5(*args) ⇒ Celerity::H5



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

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

#h5sCelerity::H5s



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

def h5s
  H5s.new(self)
end

#h6(*args) ⇒ Celerity::H6



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

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

#h6sCelerity::H6s



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

def h6s
  H6s.new(self)
end

#hidden(*args) ⇒ Celerity::Hidden



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

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

#hiddensCelerity::Hiddens



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

def hiddens
  Hiddens.new(self)
end

#image(*args) ⇒ Celerity::Image



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

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

#imagesCelerity::Images



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

def images
  Images.new(self)
end

#ins(*args) ⇒ Celerity::Ins



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

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

#inses(*args) ⇒ Celerity::Inses



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



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

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

#labelsCelerity::Labels



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

def labels
  Labels.new(self)
end

#li(*args) ⇒ Celerity::Li



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

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


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

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


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

def links
  Links.new(self)
end

#lisCelerity::Lis



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

def lis
  Lis.new(self)
end

#map(*args) ⇒ Celerity::Map



499
500
501
# File 'lib/celerity/container.rb', line 499

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

#mapsCelerity::Maps



507
508
509
# File 'lib/celerity/container.rb', line 507

def maps
  Maps.new(self)
end

#meta(*args) ⇒ Celerity::Meta



515
516
517
# File 'lib/celerity/container.rb', line 515

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

#metas(*args) ⇒ Celerity::Metas



523
524
525
# File 'lib/celerity/container.rb', line 523

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

#ol(*args) ⇒ Celerity::Ol



531
532
533
# File 'lib/celerity/container.rb', line 531

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

#olsCelerity::Ols



539
540
541
# File 'lib/celerity/container.rb', line 539

def ols
  Ols.new(self)
end

#option(*args) ⇒ Celerity::Option



547
548
549
# File 'lib/celerity/container.rb', line 547

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

#p(*args) ⇒ Celerity::P



555
556
557
# File 'lib/celerity/container.rb', line 555

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

#pre(*args) ⇒ Celerity::Pre



571
572
573
# File 'lib/celerity/container.rb', line 571

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

#presCelerity::Pres



579
580
581
# File 'lib/celerity/container.rb', line 579

def pres
  Pres.new(self)
end

#psCelerity::Ps



563
564
565
# File 'lib/celerity/container.rb', line 563

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


595
596
597
# File 'lib/celerity/container.rb', line 595

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

#radiosCelerity::Radios



603
604
605
# File 'lib/celerity/container.rb', line 603

def radios
  Radios.new(self)
end

#row(*args) ⇒ Celerity::TableRow



611
612
613
# File 'lib/celerity/container.rb', line 611

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

#rowsCelerity::TableRows



619
620
621
# File 'lib/celerity/container.rb', line 619

def rows
  TableRows.new(self)
end

#select_list(*args) ⇒ Celerity::SelectList



627
628
629
# File 'lib/celerity/container.rb', line 627

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

#select_listsCelerity::SelectLists



635
636
637
# File 'lib/celerity/container.rb', line 635

def select_lists
  SelectLists.new(self)
end

#span(*args) ⇒ Celerity::Span



643
644
645
# File 'lib/celerity/container.rb', line 643

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

#spansCelerity::Spans



651
652
653
# File 'lib/celerity/container.rb', line 651

def spans
  Spans.new(self)
end

#strong(*args) ⇒ Celerity::Spans



659
660
661
# File 'lib/celerity/container.rb', line 659

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

#strongsCelerity::Strongs



667
668
669
# File 'lib/celerity/container.rb', line 667

def strongs
  Strongs.new(self)
end

#table(*args) ⇒ Celerity::Table



675
676
677
# File 'lib/celerity/container.rb', line 675

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

#tablesCelerity::Tables



683
684
685
# File 'lib/celerity/container.rb', line 683

def tables
  Tables.new(self)
end

#tbodiesCelerity::TableBodies Also known as: bodies



699
700
701
# File 'lib/celerity/container.rb', line 699

def tbodies
  TableBodies.new(self)
end

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



691
692
693
# File 'lib/celerity/container.rb', line 691

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

#text_field(*args) ⇒ Celerity::TextField



707
708
709
# File 'lib/celerity/container.rb', line 707

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

#text_fieldsCelerity::TextFields



715
716
717
# File 'lib/celerity/container.rb', line 715

def text_fields
  TextFields.new(self)
end

#tfoot(*args) ⇒ Celerity::TableFooter



723
724
725
# File 'lib/celerity/container.rb', line 723

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

#tfootsCelerity::TableFooters Also known as: tfeet



731
732
733
# File 'lib/celerity/container.rb', line 731

def tfoots
  TableFooters.new(self)
end

#th(*args) ⇒ Celerity::Th

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



743
744
745
# File 'lib/celerity/container.rb', line 743

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

#thead(*args) ⇒ Celerity::TableHeader



760
761
762
# File 'lib/celerity/container.rb', line 760

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

#theadsCelerity::TableHeaders



768
769
770
# File 'lib/celerity/container.rb', line 768

def theads
  TableHeaders.new(self)
end

#thsObject

FIXME: implement or change api,

Raises:

  • (NotImplementedError)

See Also:



752
753
754
# File 'lib/celerity/container.rb', line 752

def ths
  raise NotImplementedError
end

#ul(*args) ⇒ Celerity::Ul



776
777
778
# File 'lib/celerity/container.rb', line 776

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

#ulsCelerity::Uls



784
785
786
# File 'lib/celerity/container.rb', line 784

def uls
  Uls.new(self)
end