Example #1
0
    def __init__(self, driver, config):
        self.base = WebDriverExt(driver)
        self.driver = driver
        self.config = config
        ###########################################LOCATORS###########################################
        self.new_element_added = lambda text: (
            ".//*[@id='tbl']/tbody/tr[last()]//*[text()='{text}']".format(
                text=text), By.XPATH)
        self.new_element_name_added = lambda text: (
            ".//*[@id='tbl']/tbody/tr[last()]//td[1][text()='{text}']".format(
                text=text), By.XPATH)
        self.new_element_count_added = lambda text: (
            ".//*[@id='tbl']/tbody/tr[last()]//td[2][text()='{text}']".format(
                text=text), By.XPATH)
        self.new_element_price_added = lambda text: (
            ".//*[@id='tbl']/tbody/tr[last()]//td[3][text()='{text}']".format(
                text=text), By.XPATH)
        self.quotes_link_add_new = ("open", By.ID)
        self.quotes_name_add_new = ("name", By.ID)
        self.quotes_count_add_new = ("count", By.ID)
        self.quotes_price_add_new = ("price", By.ID)
        self.quotes_button_add_new = ("add", By.ID)

        self.quotes_table = ("tbl", By.ID)
        self.quotes_table_head = (".//*[@id='tbl']//th", By.XPATH)
        self.quotes_table_rows = (".//*[@id='tbl']//tbody/tr", By.XPATH)
        self.quotes_table_cells = (".//*[@id='tbl']/tbody/tr[1]/td", By.XPATH)
        self.quotes_table_head_current = lambda cnt: (
            ".//*[@id='tbl']//th[{cnt}]".format(cnt=str(cnt)), By.XPATH)
        # self.quotes_table_row_current = lambda cnt: (".//*[@id='tbl']//tbody/tr[{cnt}]".format(cnt=str(cnt)), By.XPATH)
        self.quotes_table_cell_current = lambda row, cell: (
            ".//*[@id='tbl']//tbody/tr[{row}]/td[{cell}]".format(
                row=str(row), cell=str(cell)), By.XPATH)
        self.quotes_table_body_last_element = (
            ".//*[@id='tbl']/tbody/tr[last()]", By.XPATH)
Example #2
0
    def __init__(self, driver, config):
        self.base = WebDriverExt(driver)
        self.driver = driver
        self.config = config
        ###########################################LOCATORS###########################################
        self.new_element_added = lambda text: (".//*[@id='tbl']/tbody/tr[last()]//*[text()='{text}']".format(text=text),
                                                     By.XPATH)
        self.new_element_name_added = lambda text: (".//*[@id='tbl']/tbody/tr[last()]//td[1][text()='{text}']".format(text=text),
                                                     By.XPATH)
        self.new_element_count_added = lambda text: (".//*[@id='tbl']/tbody/tr[last()]//td[2][text()='{text}']".format(text=text),
                                                     By.XPATH)
        self.new_element_price_added = lambda text: (".//*[@id='tbl']/tbody/tr[last()]//td[3][text()='{text}']".format(text=text),
                                                     By.XPATH)
        self.quotes_link_add_new = ("open", By.ID)
        self.quotes_name_add_new = ("name", By.ID)
        self.quotes_count_add_new = ("count", By.ID)
        self.quotes_price_add_new = ("price", By.ID)
        self.quotes_button_add_new = ("add", By.ID)

        self.quotes_table = ("tbl", By.ID)
        self.quotes_table_head = (".//*[@id='tbl']//th", By.XPATH)
        self.quotes_table_rows = (".//*[@id='tbl']//tbody/tr", By.XPATH)
        self.quotes_table_cells = (".//*[@id='tbl']/tbody/tr[1]/td", By.XPATH)
        self.quotes_table_head_current = lambda cnt: (".//*[@id='tbl']//th[{cnt}]".format(cnt=str(cnt)), By.XPATH)
        # self.quotes_table_row_current = lambda cnt: (".//*[@id='tbl']//tbody/tr[{cnt}]".format(cnt=str(cnt)), By.XPATH)
        self.quotes_table_cell_current = lambda row, cell: (".//*[@id='tbl']//tbody/tr[{row}]/td[{cell}]"
                                                            .format(row=str(row), cell=str(cell)), By.XPATH)
        self.quotes_table_body_last_element = (".//*[@id='tbl']/tbody/tr[last()]", By.XPATH)
Example #3
0
class QuotesPageElements:
    def __init__(self, driver, config):
        self.base = WebDriverExt(driver)
        self.driver = driver
        self.config = config
        ###########################################LOCATORS###########################################
        self.new_element_added = lambda text: (".//*[@id='tbl']/tbody/tr[last()]//*[text()='{text}']".format(text=text),
                                                     By.XPATH)
        self.new_element_name_added = lambda text: (".//*[@id='tbl']/tbody/tr[last()]//td[1][text()='{text}']".format(text=text),
                                                     By.XPATH)
        self.new_element_count_added = lambda text: (".//*[@id='tbl']/tbody/tr[last()]//td[2][text()='{text}']".format(text=text),
                                                     By.XPATH)
        self.new_element_price_added = lambda text: (".//*[@id='tbl']/tbody/tr[last()]//td[3][text()='{text}']".format(text=text),
                                                     By.XPATH)
        self.quotes_link_add_new = ("open", By.ID)
        self.quotes_name_add_new = ("name", By.ID)
        self.quotes_count_add_new = ("count", By.ID)
        self.quotes_price_add_new = ("price", By.ID)
        self.quotes_button_add_new = ("add", By.ID)

        self.quotes_table = ("tbl", By.ID)
        self.quotes_table_head = (".//*[@id='tbl']//th", By.XPATH)
        self.quotes_table_rows = (".//*[@id='tbl']//tbody/tr", By.XPATH)
        self.quotes_table_cells = (".//*[@id='tbl']/tbody/tr[1]/td", By.XPATH)
        self.quotes_table_head_current = lambda cnt: (".//*[@id='tbl']//th[{cnt}]".format(cnt=str(cnt)), By.XPATH)
        # self.quotes_table_row_current = lambda cnt: (".//*[@id='tbl']//tbody/tr[{cnt}]".format(cnt=str(cnt)), By.XPATH)
        self.quotes_table_cell_current = lambda row, cell: (".//*[@id='tbl']//tbody/tr[{row}]/td[{cell}]"
                                                            .format(row=str(row), cell=str(cell)), By.XPATH)
        self.quotes_table_body_last_element = (".//*[@id='tbl']/tbody/tr[last()]", By.XPATH)
        ###########################################LOCATORS###########################################

    def click_show_add_element_section(self):
        self.base.click_element(element=self.quotes_link_add_new)

    def wait_add_element_section(self):
        self.base.wait_element(element=self.quotes_button_add_new)

    def input_item_name(self, name):
        self.base.input_text(element=self.quotes_name_add_new, text=name)

    def input_item_count(self, count):
        self.base.input_text(element=self.quotes_count_add_new, text=count)

    def input_item_price(self, price):
        self.base.input_text(element=self.quotes_price_add_new, text=price)

    def click_add_item_button(self):
        self.base.click_element(element=self.quotes_button_add_new)

    def wait_element_added(self, text):
        self.base.wait_element(element=self.new_element_added(text=text))

    def get_table_body_text(self):
        body = []
        rows = self.base.get_elements_count(element=self.quotes_table_rows)
        if rows > 0:
            cells = self.base.get_elements_count(element=self.quotes_table_cells)
        else:
            return []
        for row in xrange(1, len(rows)+1):
            current_row = []
            for cell in xrange(1, len(cells)):
                current_row.append(self.base.get_element_text(element=self.quotes_table_cell_current(row=row,
                                                                                                     cell=cell)))
            body.append(current_row)
        return body

    def is_data_added_correctly(self, name, count, price):
        assert_items = [False, False, False]
        assert_items[0] = self.base.wait_element(
            element=self.new_element_name_added(name),
            timeout=3
        )
        assert_items[1] = self.base.wait_element(
            element=self.new_element_count_added(count),
            timeout=3
        )
        assert_items[2] = self.base.wait_element(
            element=self.new_element_price_added(price),
            timeout=3
        )
        return assert_items

########################################### USE GRAB ###########################################

    def grab_get_table_body_text(self, url):  # TODO: Rewrite human way
        page = Grab()
        page.go(url)

        body = []
        rows =  page.doc.select(self.quotes_table_rows[0]).count()
        if rows > 0:
            cells = page.doc.select(self.quotes_table_cells[0]).count() - 1 # Ignore last collumn
        else:
            return []
        for row in xrange(1, rows):
            current_row = []
            for cell in xrange(1, cells):
                current_row.append(page.doc.select(self.quotes_table_cell_current(row=row,cell=cell)[0]).text())
            body.append(current_row)
        return body
Example #4
0
class QuotesPageElements:
    def __init__(self, driver, config):
        self.base = WebDriverExt(driver)
        self.driver = driver
        self.config = config
        ###########################################LOCATORS###########################################
        self.new_element_added = lambda text: (
            ".//*[@id='tbl']/tbody/tr[last()]//*[text()='{text}']".format(
                text=text), By.XPATH)
        self.new_element_name_added = lambda text: (
            ".//*[@id='tbl']/tbody/tr[last()]//td[1][text()='{text}']".format(
                text=text), By.XPATH)
        self.new_element_count_added = lambda text: (
            ".//*[@id='tbl']/tbody/tr[last()]//td[2][text()='{text}']".format(
                text=text), By.XPATH)
        self.new_element_price_added = lambda text: (
            ".//*[@id='tbl']/tbody/tr[last()]//td[3][text()='{text}']".format(
                text=text), By.XPATH)
        self.quotes_link_add_new = ("open", By.ID)
        self.quotes_name_add_new = ("name", By.ID)
        self.quotes_count_add_new = ("count", By.ID)
        self.quotes_price_add_new = ("price", By.ID)
        self.quotes_button_add_new = ("add", By.ID)

        self.quotes_table = ("tbl", By.ID)
        self.quotes_table_head = (".//*[@id='tbl']//th", By.XPATH)
        self.quotes_table_rows = (".//*[@id='tbl']//tbody/tr", By.XPATH)
        self.quotes_table_cells = (".//*[@id='tbl']/tbody/tr[1]/td", By.XPATH)
        self.quotes_table_head_current = lambda cnt: (
            ".//*[@id='tbl']//th[{cnt}]".format(cnt=str(cnt)), By.XPATH)
        # self.quotes_table_row_current = lambda cnt: (".//*[@id='tbl']//tbody/tr[{cnt}]".format(cnt=str(cnt)), By.XPATH)
        self.quotes_table_cell_current = lambda row, cell: (
            ".//*[@id='tbl']//tbody/tr[{row}]/td[{cell}]".format(
                row=str(row), cell=str(cell)), By.XPATH)
        self.quotes_table_body_last_element = (
            ".//*[@id='tbl']/tbody/tr[last()]", By.XPATH)
        ###########################################LOCATORS###########################################

    def click_show_add_element_section(self):
        self.base.click_element(element=self.quotes_link_add_new)

    def wait_add_element_section(self):
        self.base.wait_element(element=self.quotes_button_add_new)

    def input_item_name(self, name):
        self.base.input_text(element=self.quotes_name_add_new, text=name)

    def input_item_count(self, count):
        self.base.input_text(element=self.quotes_count_add_new, text=count)

    def input_item_price(self, price):
        self.base.input_text(element=self.quotes_price_add_new, text=price)

    def click_add_item_button(self):
        self.base.click_element(element=self.quotes_button_add_new)

    def wait_element_added(self, text):
        self.base.wait_element(element=self.new_element_added(text=text))

    def get_table_body_text(self):
        body = []
        rows = self.base.get_elements_count(element=self.quotes_table_rows)
        if rows > 0:
            cells = self.base.get_elements_count(
                element=self.quotes_table_cells)
        else:
            return []
        for row in xrange(1, len(rows) + 1):
            current_row = []
            for cell in xrange(1, len(cells)):
                current_row.append(
                    self.base.get_element_text(
                        element=self.quotes_table_cell_current(row=row,
                                                               cell=cell)))
            body.append(current_row)
        return body

    def is_data_added_correctly(self, name, count, price):
        assert_items = [False, False, False]
        assert_items[0] = self.base.wait_element(
            element=self.new_element_name_added(name), timeout=3)
        assert_items[1] = self.base.wait_element(
            element=self.new_element_count_added(count), timeout=3)
        assert_items[2] = self.base.wait_element(
            element=self.new_element_price_added(price), timeout=3)
        return assert_items

########################################### USE GRAB ###########################################

    def grab_get_table_body_text(self, url):  # TODO: Rewrite human way
        page = Grab()
        page.go(url)

        body = []
        rows = page.doc.select(self.quotes_table_rows[0]).count()
        if rows > 0:
            cells = page.doc.select(
                self.quotes_table_cells[0]).count() - 1  # Ignore last collumn
        else:
            return []
        for row in xrange(1, rows):
            current_row = []
            for cell in xrange(1, cells):
                current_row.append(
                    page.doc.select(
                        self.quotes_table_cell_current(row=row,
                                                       cell=cell)[0]).text())
            body.append(current_row)
        return body