lib/firewatir/elements/table.rb in firewatir-1.6.5 vs lib/firewatir/elements/table.rb in firewatir-1.6.6.rc1

- old
+ new

@@ -1,218 +1,218 @@ -module FireWatir - class Table < Element - attr_accessor :element_name - TAG = 'TABLE' - - # - how - Attribute to identify the table element. - # - what - Value of that attribute. - def initialize(container, how, what) - @how = how - @what = what - @container = container - @o = nil - #super nil - end - - # - # Description: - # Locate the table element. - # - def locate - case @how - when :jssh_name - @element_name = @what - when :xpath - @element_name = element_by_xpath(@container, @what) - else - @element_name = locate_tagged_element('TABLE', @how, @what) - end - @o = self - end - - # - # Description: - # Override the highlight method, as if the tables rows are set to have a background color, - # this will override the table background color, and the normal flash method wont work - # - def highlight(set_or_clear ) - - if set_or_clear == :set - begin - @original_border = @o.border.to_i - if @o.border.to_i==1 - @o.border = 2 - else - @o.border=1 - end - rescue - @original_border = nil - end - else - begin - @o.border= @original_border unless @original_border == nil - @original_border = nil - rescue - # we could be here for a number of reasons... - ensure - @original_border = nil - end - end - super - end - - # - # Description: - # Used to populate the properties in the to_s method. - # - #def table_string_creator - # n = [] - # n << "rows:".ljust(TO_S_SIZE) + self.row_count.to_s - # n << "cols:".ljust(TO_S_SIZE) + self.column_count.to_s - # return n - #end - #private :table_string_creator - - # returns the properties of the object in a string - # raises an ObjectNotFound exception if the object cannot be found - # TODO: Implement to_s method for this class. - - def to_s - assert_exists - r = super({"rows" => "rows.length","columns" => "columnLength", "cellspacing" => "cellspacing", "cellpadding" => "cellpadding", "border" => "border"}) - # r += self.column_count.to_s - end - - # - # Description: - # Gets the number of rows in the table. - # - # Output: - # Number of rows. - # - def row_count - assert_exists - return rows.length - end - - # - # Description: - # Gets the table as a 2 dimensional array. Dont expect too much if there are nested tables, colspan etc. - # - # Output: - # 2D array with rows and column text of the table. - # - def to_a - assert_exists - y = [] - table_rows = rows - for row in table_rows - x = [] - row.each do |td| - x << td.to_s.strip - end - y << x - end - return y - end - - # - # Description: - # Gets the array of rows in the table. - # - # Output: - # Array of rows. - # - def rows - assert_exists - arr_rows = get_rows - table_rows = Array.new(arr_rows.length) - for i in 0..arr_rows.length - 1 do - table_rows[i] = TableRow.new(@container, :jssh_name, arr_rows[i]) - end - return table_rows - end - - # - # Description: - # Get row at particular index in table. - # - # Input: - # key - row index - # - # Output: - # Table Row element - # - def [](key) - assert_exists - arr_rows = rows - return arr_rows[key - 1] - end - - # - # Desription: - # Iterate over each table row element. - # - def each - assert_exists - arr_rows = rows - for i in 0..arr_rows.length - 1 do - yield arr_rows[i] - end - end - - # - # Description: - # Get column count of first row in the table. - # - # Output: - # Number of columns in first row. - # - def column_count - assert_exists - arr_rows = rows - return arr_rows[0].column_count - end - - # - # Description: - # Get values of specified column in each row. - # - # Input: - # Column number - # - # Output: - # Values of column (specified as input) in each row - # - def column_values(column) - assert_exists - arr_rows = rows - values = Array.new(arr_rows.length) - for i in 0..arr_rows.length - 1 do - values[i] = arr_rows[i][column].to_s - end - return values - end - - # - # Description: - # Get values of all the column in specified row. - # - # Input: - # Row number. - # - # Output: - # Value of all columns present in the row. - # - def row_values(row) - assert_exists - arr_rows = rows - cells = arr_rows[row - 1].cells - values = Array.new(cells.length) - for i in 0..cells.length - 1 do - values[i] = cells[i].to_s - end - return values - end - - end # Table -end # FireWatir +module FireWatir + class Table < Element + attr_accessor :element_name + TAG = 'TABLE' + + # - how - Attribute to identify the table element. + # - what - Value of that attribute. + def initialize(container, how, what) + @how = how + @what = what + @container = container + @o = nil + #super nil + end + + # + # Description: + # Locate the table element. + # + def locate + case @how + when :jssh_name + @element_name = @what + when :xpath + @element_name = element_by_xpath(@container, @what) + else + @element_name = locate_tagged_element('TABLE', @how, @what) + end + @o = self + end + + # + # Description: + # Override the highlight method, as if the tables rows are set to have a background color, + # this will override the table background color, and the normal flash method wont work + # + def highlight(set_or_clear ) + + if set_or_clear == :set + begin + @original_border = @o.border.to_i + if @o.border.to_i==1 + @o.border = 2 + else + @o.border=1 + end + rescue + @original_border = nil + end + else + begin + @o.border= @original_border unless @original_border == nil + @original_border = nil + rescue + # we could be here for a number of reasons... + ensure + @original_border = nil + end + end + super + end + + # + # Description: + # Used to populate the properties in the to_s method. + # + #def table_string_creator + # n = [] + # n << "rows:".ljust(TO_S_SIZE) + self.row_count.to_s + # n << "cols:".ljust(TO_S_SIZE) + self.column_count.to_s + # return n + #end + #private :table_string_creator + + # returns the properties of the object in a string + # raises an ObjectNotFound exception if the object cannot be found + # TODO: Implement to_s method for this class. + + def to_s + assert_exists + r = super({"rows" => "rows.length","columns" => "columnLength", "cellspacing" => "cellspacing", "cellpadding" => "cellpadding", "border" => "border"}) + # r += self.column_count.to_s + end + + # + # Description: + # Gets the number of rows in the table. + # + # Output: + # Number of rows. + # + def row_count + assert_exists + return rows.length + end + + # + # Description: + # Gets the table as a 2 dimensional array. Dont expect too much if there are nested tables, colspan etc. + # + # Output: + # 2D array with rows and column text of the table. + # + def to_a + assert_exists + y = [] + table_rows = rows + for row in table_rows + x = [] + row.each do |td| + x << td.to_s.strip + end + y << x + end + return y + end + + # + # Description: + # Gets the array of rows in the table. + # + # Output: + # Array of rows. + # + def rows + assert_exists + arr_rows = get_rows + table_rows = Array.new(arr_rows.length) + for i in 0..arr_rows.length - 1 do + table_rows[i] = TableRow.new(@container, :jssh_name, arr_rows[i]) + end + return table_rows + end + + # + # Description: + # Get row at particular index in table. + # + # Input: + # key - row index + # + # Output: + # Table Row element + # + def [](key) + assert_exists + arr_rows = rows + return arr_rows[key - 1] + end + + # + # Desription: + # Iterate over each table row element. + # + def each + assert_exists + arr_rows = rows + for i in 0..arr_rows.length - 1 do + yield arr_rows[i] + end + end + + # + # Description: + # Get column count of first row in the table. + # + # Output: + # Number of columns in first row. + # + def column_count + assert_exists + arr_rows = rows + return arr_rows[0].column_count + end + + # + # Description: + # Get values of specified column in each row. + # + # Input: + # Column number + # + # Output: + # Values of column (specified as input) in each row + # + def column_values(column) + assert_exists + arr_rows = rows + values = Array.new(arr_rows.length) + for i in 0..arr_rows.length - 1 do + values[i] = arr_rows[i][column].to_s + end + return values + end + + # + # Description: + # Get values of all the column in specified row. + # + # Input: + # Row number. + # + # Output: + # Value of all columns present in the row. + # + def row_values(row) + assert_exists + arr_rows = rows + cells = arr_rows[row - 1].cells + values = Array.new(cells.length) + for i in 0..cells.length - 1 do + values[i] = cells[i].to_s + end + return values + end + + end # Table +end # FireWatir