コード例 #1
0
class AddCommentBlock(Block):
    contact_type_drop_down = DropDownWidget(By.ID,
                                            'add_comment_contact_type_chosen')
    comment_event_type_drop_down = DropDownWidget(
        By.ID, 'add_comment_event_type_chosen')
    save_comment_button = Element(By.CSS_SELECTOR, "button[type='submit']")
    date_input = Element(By.NAME, 'add_comment-next_event_date')
    comment_input = Element(By.CSS_SELECTOR, '[name=add_comment-comment]')
    scheduled_events_quality = Element(By.CSS_SELECTOR,
                                       '.js-scheduled-events-quantity')
    preview_button = Element(By.CSS_SELECTOR, ".wmd-button.wmd-preview-button")
コード例 #2
0
ファイル: employee_list.py プロジェクト: DenysBordi/Tests
class EmployeesListBlock(Block):

    bann_manager_btn = Element(
        By.XPATH,
        u".//a[contains(text(), 'Заблокировать')]"
    )
    delete_manager_btn = Element(
        By.XPATH,
        u".//a[contains(text(), 'Удалить')]"
    )
    manager_info = Element.as_list(
        By.XPATH,
        ".//td[position()=3]"
    )
コード例 #3
0
class CRMDeleteManagerPage(Page):

    url = 'agency/delete_manager/'

    title_page = Element(By.XPATH, ".//*[@id='cabinet']//h1")
    manager_list_field = ManagerListForAttachmentCompanies(
        By.XPATH, ".//form[@name='rebind_companies_form']")
コード例 #4
0
class ManagerListForAttachmentCompanies(Block):

    all_managers_chkbx = Checkbox(
        By.XPATH,
        ".//input[@name='select-all-managers']"
    )
    submit_btn = Element(
        By.XPATH,
        ".//*[@id='submit_submit']"
    )
    team_select = SelectDropDown(
        By.XPATH,
        ".//*[@id='team-selector']"
    )
コード例 #5
0
class PreviewCommentBlock(Block):
    preview_comment_text = Element(By.CSS_SELECTOR, "#markdownPanel")
    close_btn = Element(By.CSS_SELECTOR, ".ui-icon-closethick")
コード例 #6
0
class CRMCompanyCommentsPage(Page):
    add_comment_link = Element(By.CSS_SELECTOR, '.js-add-comment-link')
    add_stats_link = Element(By.CSS_SELECTOR, '.js-insert-stats-link')
    next_event_time_drop_down = SelectDropDown(By.ID,
                                               'add_comment-next_event_time')
    selectable_stages = Element.as_list(
        By.XPATH, '//li[contains(@class, "js-selectable-choice")]'
        '[not(@data-stage="REJECTION")]//*'
        '[@class="b-stages__item-text js-stage-title"]')
    current_stage = Element(
        By.XPATH, '//li[contains(@class, "b-stages__item_state_active")]'
        '//*[@class="b-stages__item-text js-stage-title"]')
    cancellation_stage = Element(By.XPATH, "//*[(@data-stage='REJECTION')]")
    disabled_stages = Element.as_list(By.CSS_SELECTOR,
                                      ".b-stages_state_disable.js-disabled")

    comment_type_all_btn = Element(By.XPATH, ".//*[@id = 'comment_type_all']")
    comment_type_system_btn = Element(By.XPATH,
                                      ".//*[@id = 'comment_type_system']")
    comment_type_manual_btn = Element(By.XPATH,
                                      ".//*[@id = 'comment_type_manual']")
    submit_filter_btn = Element(By.XPATH, u".//*[@value = 'Отфильтровать']")
    comment_filter_type_drop_down = DropDownWidget(By.ID, 'event_type_chosen')

    add_comment_block = AddCommentBlock(
        By.XPATH,
        './/*[contains(@class,"b-agency-client-add-comment-form__form-fields-container")]'
    )
    comment_block = AddCommentBlock(
        By.XPATH,
        './/*[contains(@class,"b-agency-client-add-comment-form__form-fields-container")]'
    )
    preview_comment_form = PreviewCommentBlock(By.CSS_SELECTOR,
                                               ".preview_panel")
    comments_list = CommentsListBlock(
        By.XPATH, "//*[@id='comment_list_container']/table/tbody")
    current_manager_block = Element(By.CSS_SELECTOR,
                                    ".agency_client_manager_info")

    crm_url = 'agency/crm/company_comments/%s'
    admin_url = 'admin/crm/company_comments/%s'

    def find_comment_left(self, comment_type, comment_text):
        comments = zip(self.comments_list.comment_headers,
                       self.comments_list.comment_bodies)
        for comment_line in comments:
            if comment_type.lower() in comment_line[0].text.lower() \
                    and comment_text.lower() in comment_line[1].text.lower():
                return True
        else:
            return False

    def get_comments_author(self):
        return [x.text for x in self.comments_list.comment_headers_author]

    def click_random_selectable_stage(self):
        random_stage = random.choice(self.selectable_stages)
        if self.disabled_stages.is_present():
            self.cancellation_stage.click()
            random_stage.click()
        else:
            random_stage.click()
        return random_stage.text
コード例 #7
0
class CommentsListBlock(Block):
    comment_headers = Element.as_list(By.CSS_SELECTOR, '.comment-header')
    comment_bodies = Element.as_list(By.CSS_SELECTOR, '.comment-header + tr')
    comment_headers_author = Element.as_list(
        By.XPATH, "//*[@class = 'comment-header']//td[5]/span")
コード例 #8
0
ファイル: employee_list.py プロジェクト: DenysBordi/Tests
class CRMEmployeeListPage(Page):

    url = 'agency/agency/employee_list'

    result_message = Element(
        By.XPATH,
        ".//*[@id='cabinet_flash_message']//div[@class='h-layout-hidden']"
    )
    icon_success = Element(
        By.XPATH,
        ".//i[contains(@class,'icon-success')]"
    )
    team_select = Element(
        By.XPATH,
        ".//*[@id='team_choose_select']"
    )
    team_list_btn = Element(
        By.XPATH,
        ".//*[@id='team_list_button']"
    )
    create_manager_btn = Element(
        By.XPATH,
        ".//*[@id='client']"
    )
    employees_list_field = EmployeesListBlock.as_list(
        By.XPATH,
        "//*[@id='cabinet']//table[@class='item-list']//tr[not (./th)]")
    pager_link_list = Element.as_list(
        By.XPATH,
        ".//a[contains(@href, 'page_')]"
    )
    email_field = Element(
        By.XPATH,
        ".//*[contains(text(),'')]"
    )
    filters = FiltersBlock(
        By.XPATH,
        "//*[@id='search_employee_list_form']"
    )
    alert_accept_ban_btn = Element.as_list(
        By.XPATH,
        "//a[contains(@data-reactid, 'yes')]"
    ) #list because two identical locators

    def get_employee_row(self, manager_email):

        return self.employees_list_field.find(
            By.XPATH,
            ".//*[@id='cabinet']//table[@class='item-list']//tr[not (./th)]"
            "[./td[3][contains(text(),'%s')]]" % manager_email
        )

    def get_page_links(self):

        return [x.get_attribute("href") for x in self.pager_link_list][:-1] \
            if self.pager_link_list.is_present() else []

    def find_manager(self, team_name, manager_email):
        self.filters.team_dd.type_text_and_select_option(team_name)
        self.filters.search_input.set_value(manager_email)
        self.filters.search_btn.click()
コード例 #9
0
ファイル: employee_list.py プロジェクト: DenysBordi/Tests
class FiltersBlock(Block):

    team_dd = DropDownWidget(By.XPATH, ".//*[@id='team_chosen']")
    search_input = Element(By.XPATH, ".//*[@id='query']")
    search_btn = Element(By.XPATH, ".//*[@id='submit_button']")