module Symbiont module WebObjects class Table < WebObject include Enumerable # This method is used to return a TableRow object based on the index provided. When # the index provided is a string, the text will be matched with the text from the first # column. # @return [Symbiont::WebObjects::TableRow] def [](index) index = find_by_title(index) if index.kind_of?(String) Object::Symbiont::WebObjects::TableRow.new(@web_object[index]) end # This method is an iterator that returns a TableRow object each time through # the loop. # @return [Symbiont::WebObjects::TableRow] def each for index in 1..self.rows do yield self[index - 1] end end # This method will return the number of rows in a table. def rows @web_object.wd.find_elements(:xpath, row_xpath).size end # Returns a reference to the first row web object of a table. # @return [Symbiont::WebObjects::TableRow] def first_row self[0] end # Returns a reference to the last row web object of a table. # @return [Symbiont::WebObjects::TableRow] def last_row self[-1] end protected def row_xpath ".//child::tr" end private def find_by_title(row_text) @web_object.rows.find_index {|row| row[0].text == row_text} end end # class: Table end # module: WebObjects end # module: Symbiont