Class: Celerity::ElementCollection

Inherits:
Object
Includes:
Enumerable
Defined in:
lib/celerity/element_collection.rb

Overview

This class is the superclass for the iterator classes (Buttons, Links, Spans etc.) It would normally only be accessed by the iterator methods (Browser#spans, Browser#links, …).

Method Summary

Constructor Details

- (ElementCollection) initialize(container, how = nil, what = nil)

A new instance of ElementCollection

Returns:



15
16
17
18
19
# File 'lib/celerity/element_collection.rb', line 15

def initialize(container, how = nil, what = nil)
  @container = container
  @object = (how == :object ? what : nil)
  @length = length
end

Method Details

- (Celerity::Element) [](n)

Get the element at the given index. By default, this is 1-indexed to keep compatibility with Watir.

Also note that because of Watir’s lazy loading, this will return an Element instance even if the index is out of bounds.

Parameters:

  • (Fixnum) n — Index of wanted element, 1-indexed unless Celerity.index_offset is changed.

Returns:



60
61
62
63
64
65
66
# File 'lib/celerity/element_collection.rb', line 60

def [](n)
  if @elements && @elements[n - Celerity.index_offset]
    element_class.new(@container, :object, @elements[n - Celerity.index_offset])
  else
    iterator_object(n - Celerity.index_offset)
  end
end

- (Object) each {|element| ... }

Yield Parameters:



39
40
41
42
43
44
45
46
47
# File 'lib/celerity/element_collection.rb', line 39

def each
  if @elements
    @elements.each { |e| yield(element_class.new(@container, :object, e)) }
  else
    0.upto(@length - 1) { |i| yield iterator_object(i) }
  end

  @length
end

- (Celerity::Element) first

Get the first element in this collection. (Celerity-specific)

Returns:



74
75
76
# File 'lib/celerity/element_collection.rb', line 74

def first
  self[Celerity.index_offset]
end

- (Celerity::Element) last

Get the last element in this collection. (Celerity-specific)

Returns:



84
85
86
# File 'lib/celerity/element_collection.rb', line 84

def last
  self[Celerity.index_offset - 1]
end

- (Fixnum) length Also known as: size

The number of elements in this collection.

Returns:

  • (Fixnum) — The number of elements in this collection.


25
26
27
28
29
30
31
32
# File 'lib/celerity/element_collection.rb', line 25

def length
  if @object
    @object.length
  else
    @elements ||= ElementLocator.new(@container, element_class).elements_by_idents
    @elements.size
  end
end

- (String) to_s

Note: This can be quite useful in irb:

  puts browser.text_fields

Returns:

  • (String) — A string representation of all elements in this collection.


96
97
98
# File 'lib/celerity/element_collection.rb', line 96

def to_s
  map { |e| e.to_s }.join("\n")
end