module Watir class Table < HTMLElement include RowContainer # # Represents table rows as hashes # # @return [Array] # def hashes all_rows = rows.to_a header_row = all_rows.shift or raise Exception::Error, "no rows in table" headers = header_row.ths.map { |header_cell| header_cell.text } result = [] all_rows.each_with_index do |row, idx| cells = row.cells.to_a if cells.length != headers.length raise Exception::Error, "row at index #{idx} has #{cells.length} cells, expected #{headers.length}" end result << headers.inject({}) { |res, header| res.merge(header => cells.shift.text) } end result end # # Returns row of this table with given index. # # @param [Integer] idx # @return Watir::Row # def [](idx) row(:index, idx) end end # Table end # Watir