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:



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

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:



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

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

#mapsCelerity::Maps

Returns:



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

def maps
  Maps.new(self)
end

#meta(*args) ⇒ Celerity::Meta

Returns:



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

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

#metas(*args) ⇒ Celerity::Metas

Returns:



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

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

#ol(*args) ⇒ Celerity::Ol

Returns:



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

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

#olsCelerity::Ols

Returns:



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

def ols
  Ols.new(self)
end

#option(*args) ⇒ Celerity::Option

Returns:



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

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

#p(*args) ⇒ Celerity::P

Returns:



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

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

#pre(*args) ⇒ Celerity::Pre

Returns:



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

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

#presCelerity::Pres

Returns:



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

def pres
  Pres.new(self)
end

#psCelerity::Ps

Returns:



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

Returns:



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

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

#radiosCelerity::Radios

Returns:



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

def radios
  Radios.new(self)
end

#row(*args) ⇒ Celerity::TableRow

Returns:



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

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

#rowsCelerity::TableRows

Returns:



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

Returns:



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

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

#spansCelerity::Spans

Returns:



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

def spans
  Spans.new(self)
end

#strong(*args) ⇒ Celerity::Spans

Returns:



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

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

#strongsCelerity::Strongs

Returns:



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

def strongs
  Strongs.new(self)
end

#table(*args) ⇒ Celerity::Table

Returns:



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

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

#tablesCelerity::Tables

Returns:



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

Returns:



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

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

#text_field(*args) ⇒ Celerity::TextField

Returns:



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.

Returns:



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

Returns:



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

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

#ulsCelerity::Uls

Returns:



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

def uls
  Uls.new(self)
end