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
- - (Celerity::Element) [](n) Get the element at the given index.
- - (Object) each {|element| ... }
- - (Celerity::Element) first Get the first element in this collection.
- - (ElementCollection) initialize(container, how = nil, what = nil) A new instance of ElementCollection.
- - (Celerity::Element) last Get the last element in this collection.
- - (Fixnum) length (also: #size) The number of elements in this collection.
- - (String) to_s Note: This can be quite useful in irb:.
Constructor Details
- (ElementCollection) initialize(container, how = nil, what = nil)
A new instance of ElementCollection
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.
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| ... }
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)
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)
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.
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
96 97 98 |
# File 'lib/celerity/element_collection.rb', line 96 def to_s map { |e| e.to_s }.join("\n") end |