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

Returns:



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

Returns:



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.

API:

  • private



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:

  • The text to look for.

Returns:

  • 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

Returns:



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

Returns:



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

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

#select_listsCelerity::SelectLists

Returns:



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

Returns:



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

Returns:



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

def text_fields
  TextFields.new(self)
end

#tfoot(*args) ⇒ Celerity::TableFooter

Returns:



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

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

#tfootsCelerity::TableFooters Also known as: tfeet

Returns:



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 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

Returns:



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

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

#theadsCelerity::TableHeaders

Returns:



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

def theads
  TableHeaders.new(self)
end

#thsObject

FIXME: implement or change api,

Raises:

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