class PracujPLOfferList(DataTable): rows_locator = (By.CSS_SELECTOR, "li.results__list-container-item") name = Column(By.CSS_SELECTOR, "li:nth-of-type({row}) h3.offer-details__title > .offer-details__title-link") location = Column(By.CSS_SELECTOR, "li:nth-of-type({row}) li.offer-labels__item.offer-labels__item--location") link = Column(By.CSS_SELECTOR, "li:nth-of-type({row}) a.offer-details__title-link") region_link = Column(By.CSS_SELECTOR, "li:nth-of-type({row}) a.offer-regions__label")
class OLXOfferList(DataTable): rows_locator = (By.CSS_SELECTOR, "tbody > tr") name = Column(By.CSS_SELECTOR, "tbody > tr:nth-of-type({row}) strong") location = Column(By.CSS_SELECTOR, "tbody > tr:nth-of-type({row}) td.bottom-cell small:nth-of-type(1)") link = Column(By.XPATH, "//tbody/tr[@class='wrap']//strong/parent::a") date = Column(By.CSS_SELECTOR, "tbody > tr:nth-of-type({row}) td.bottom-cell small:nth-of-type(2)")
class AplikujPLOfferList(DataTable): rows_locator = (By.CSS_SELECTOR, "div.row") name = Column(By.CSS_SELECTOR, "div.row:nth-of-type({row}) a.st") location = Column(By.CSS_SELECTOR, "div.row:nth-of-type({row}) span.loc > span") link = Column(By.CSS_SELECTOR, "div.row:nth-of-type({row}) a.st")
class SkillshotOfferList(DataTable): rows_locator = (By.TAG_NAME, "tr") name = Column(By.CSS_SELECTOR, "tr:nth-of-type({row}) td:nth-of-type(2) > a") location = Column(By.CSS_SELECTOR, "tr:nth-of-type({row}) td:nth-of-type(2)") link = Column(By.CSS_SELECTOR, "tr:nth-of-type({row}) td:nth-of-type(2) > a") date = Column(By.CSS_SELECTOR, "tr:nth-of-type({row}) td:nth-of-type(3)")
class PracaPLOfferList(DataTable): rows_locator = (By.CSS_SELECTOR, "li.listing__item") name = Column( By.CSS_SELECTOR, "li.listing__item:nth-of-type({row}) a.listing__offer-title.job-id") location = Column( By.CSS_SELECTOR, "li.listing__item:nth-of-type({row}) div.listing__location") link = Column( By.CSS_SELECTOR, "li.listing__item:nth-of-type({row}) a.listing__offer-title.job-id")
class GumtreeOfferList(DataTable): rows_locator = (By.CSS_SELECTOR, "div.tileV1") name = Column( By.CSS_SELECTOR, "div.tileV1:nth-of-type({row}) > div.title > a.href-link.tile-title-text" ) location = Column( By.CSS_SELECTOR, "div.tileV1:nth-of-type({row}) > div.category-location > span") link = Column( By.CSS_SELECTOR, "div.tileV1:nth-of-type({row}) > div.title > a.href-link.tile-title-text" ) date = Column( By.CSS_SELECTOR, "div.tileV1:nth-of-type({row}) > div.info > div.creation-date > span")
class MorizonResultsList(DataTable): rows_locator = ( By.CSS_SELECTOR, ".listingBox.mainBox.propertyListingBox.content-box-main.col-xs-9 > section > .row.row--property-list" ) price = Column( By.CSS_SELECTOR, ".row.row--property-list:nth-of-type({row}) p.single-result__price:nth-of-type(1)" )
class IndeedOfferList(DataTable): def __init__(self, how: str, what: str): super().__init__(how, what) self.index_fix = 3 def __getitem__(self, index): try: _ = self._table.find_element_by_css_selector( ".jobsearch-SerpJobCard.unifiedRow.row.result.clickcard:nth-of-type(5)" ) return super().__getitem__(2 * index + self.index_fix + 1) except NoSuchElementException: return super().__getitem__(2 * index + self.index_fix) def __next__(self): if self.current_row > 2 * len(self) + self.index_fix: self.__current_row = 0 raise StopIteration() item = self.__getitem__(self.__current_row) self.__current_row += 1 return item rows_locator = (By.CSS_SELECTOR, ".jobsearch-SerpJobCard.unifiedRow.row.result.clickcard") name = Column( By.CSS_SELECTOR, ".jobsearch-SerpJobCard.unifiedRow.row.result.clickcard:nth-of-type({row}) a.jobtitle.turnstileLink" ) location = Column( By.CSS_SELECTOR, ".jobsearch-SerpJobCard.unifiedRow.row.result.clickcard:nth-of-type({row}) .location.accessible-contrast-color-location" ) link = Column( By.CSS_SELECTOR, ".jobsearch-SerpJobCard.unifiedRow.row.result.clickcard:nth-of-type({row}) a.jobtitle.turnstileLink" )
class JoobleOfferList(DataTable): def __init__(self, how: str, what: str): super().__init__(how, what) self.index_fix = 2 def __getitem__(self, index): return super().__getitem__(index+self.index_fix) def __next__(self): if self.current_row > len(self)+self.index_fix: self.__current_row = 0 raise StopIteration() item = self.__getitem__(self.__current_row) self.__current_row += 1 return item rows_locator = (By.CSS_SELECTOR, "div.vacancy_wrapper.vacancy-js.vacancy_wrapper-js") name = Column(By.CSS_SELECTOR, "div.vacancy_wrapper.vacancy-js.vacancy_wrapper-js:nth-of-type({row}) .position") location = Column(By.CSS_SELECTOR, "div.vacancy_wrapper.vacancy-js.vacancy_wrapper-js:nth-of-type({row}) span.serp_location__region") link = Column(By.CSS_SELECTOR, "div.vacancy_wrapper.vacancy-js.vacancy_wrapper-js:nth-of-type({row}) a.link-position.job-marker-js")
class UsersTable(DataTable): rows_locator = (By.CSS_SELECTOR, "tbody > tr") headers_locator = (By.CSS_SELECTOR, "thead > tr > th") last_name = Column(By.CSS_SELECTOR, "tr:nth-of-type({row}) td:nth-of-type(1)") first_name = Column(By.CSS_SELECTOR, "tr:nth-of-type({row}) td:nth-of-type(2)") email = Column(By.CSS_SELECTOR, "tr:nth-of-type({row}) td:nth-of-type(3)") due = Column(By.CSS_SELECTOR, "tr:nth-of-type({row}) td:nth-of-type(4)") web_site = Column(By.CSS_SELECTOR, "tr:nth-of-type({row}) td:nth-of-type(5)") delete_button = Column( By.CSS_SELECTOR, "tr:nth-of-type({row}) td:nth-of-type(6) a[href='#delete']") edit_button = Column( By.CSS_SELECTOR, "tr:nth-of-type({row}) td:nth-of-type(6) a[href='#edit']") cancel_button = Column( By.CSS_SELECTOR, "tr:nth-of-type({row}) td:nth-of-type(6) a[href='#cancel']")