Source code for nerodia.elements.row

import six

from .html_elements import TableRowCollection
from .table_row import TableRow
from ..meta_elements import MetaHTMLElement


[docs]@six.add_metaclass(MetaHTMLElement) class Row(TableRow): pass
[docs]@six.add_metaclass(MetaHTMLElement) class RowCollection(TableRowCollection): def __init__(self, *args, **kwargs): self.list = None super(RowCollection, self).__init__(*args, **kwargs) def __iter__(self): """ Yields each row in collection :rtype: iter :Example: rows = browser.rows(class='kls') for row in rows: print(row.text) """ # we do this craziness since the xpath used will find direct child rows # before any rows inside thead/tbody/tfoot... if not self.list: self._get_list() for item in self.list: yield item @property def to_list(self): # we do this craziness since the xpath used will find direct child rows # before any rows inside thead/tbody/tfoot... import nerodia nerodia.logger.deprecate('RowCollection.to_list', 'list(RowCollection)') return list(self) # private def _get_list(self): if not self.list: elements = list(super(RowCollection, self).__iter__()) self.list = sorted(elements, key=lambda e: int(e.attribute_value('rowIndex')))