def search_and_select(self, text): selector_dialog = SEARCH_DIALOG selector_loader = CHART_LOADER self.search(text) safe_click(self.get_search_result(text)) self.basic_wait(selector_dialog, False) self.basic_wait(selector_loader, False)
def open_search_dialog(self): try: self.get_search_dialog() except NoSuchElementException: selector = SEARCH_DIALOG safe_click(self.get_token_selector()) self.basic_wait(selector, True)
def open_chart_settings_menu(self): try: self.get_chart_settings_menu() except NoSuchElementException: selector = CHART_SETTINGS_MENU safe_click(self.get_chart_settings_button()) self.basic_wait(selector, True)
def open_publish_menu(self): try: self.get_publish_insight_button() except NoSuchElementException: safe_click(self.get_publish_menu_button()) self.wait.until_not(lambda wd: wd.find_element_by_css_selector( EDITOR_PUBLISH_INSIGHT_LOADER).is_displayed())
def filter_insights_by_first_tag(self, insight): tags = self.get_insight_tags(insight) if len(tags) == 0: raise TagError("There're no tags on given insight!") tag_text = tags[0].text safe_click(tags[0]) self.wait_until_tab_is_active('All Insights') return tag_text
def open_share_dialog(self): try: self.get_share_dialog() except NoSuchElementException: selector = SHARE_DIALOG self.open_chart_settings_menu() safe_click(self.get_chart_settings_menu_option("share")) self.basic_wait(selector, True)
def close_popup(self, selector, timeout): try: self.basic_wait(selector, True, timeout) except TimeoutException: return button = self.driver.find_element_by_css_selector(selector) safe_click(button) self.basic_wait(selector, False)
def close_chart_settings_menu(self): try: self.get_chart_settings_menu() except NoSuchElementException: pass else: selector = CHART_SETTINGS_MENU safe_click(self.get_modal_overlay()) self.basic_wait(selector, False)
def open_metrics_menu(self): try: self.get_metrics_menu() except NoSuchElementException: selector_menu = METRICS_MENU selector_loader = METRICS_MENU_LOADER safe_click(self.get_metrics_menu_button()) self.basic_wait(selector_menu, True) self.basic_wait(selector_loader, False)
def add_insight_tag(self, tag): self.get_tag_input().send_keys(tag) self.wait.until(lambda wd: tag.lower( ) in [element.text.lower() for element in self.get_tag_list_items()]) safe_click(self.get_tag_list_item(tag)) self.wait.until(lambda wd: tag.lower() in [ element.text.lower().strip(' \n') for element in self.get_selected_tags() ])
def close_metrics_menu(self): try: self.get_metrics_menu() except NoSuchElementException: pass else: selector = METRICS_MENU safe_click(self.get_modal_overlay()) self.basic_wait(selector, False)
def close_search_dialog(self): try: self.get_search_dialog() except NoSuchElementException: pass else: selector = SEARCH_DIALOG close_button = self.get_search_dialog_close() safe_click(close_button) self.basic_wait(selector, False)
def filter_insights_by_tag(self, insight, tag): tags = list( filter(lambda x: x.text.lower() == tag.lower(), self.get_insight_tags(insight))) if len(tags) == 0: raise TagError(f"There're no '{tag}' tag on given insight!") tag_text = tags[0].text safe_click(tags[0]) self.wait_until_tab_is_active('All Insights') return tag_text
def deselect_metric(self, metric): try: active_metric = self.get_active_metric(metric) except NoSuchElementException: pass else: selector = CHART_LOADER safe_click(self.get_active_metric_close(active_metric)) self.wait.until_not( lambda wd: self.get_active_metric(metric).is_displayed()) self.basic_wait(selector, False)
def close_share_dialog(self): try: self.get_share_dialog() except NoSuchElementException: pass else: selector = SHARE_DIALOG close_button = self.get_share_dialog_close() safe_click(close_button) self.basic_wait(selector, False) finally: self.close_chart_settings_menu()
def try_toggle_tag_list(self, state): try: self.get_tag_list() if state: return else: safe_click(self.get_tag_list_toggle()) except NoSuchElementException: if state: safe_click(self.get_tag_list_toggle()) else: return
def select_metric(self, metric): try: self.get_active_metric(metric) except NoSuchElementException: selector = CHART_LOADER self.open_metrics_menu() self.select_metrics_category(metrics[metric][0]) metric_element = self.get_metric(metric) safe_click(self.get_metric_add(metric_element)) self.wait.until( lambda wd: self.get_active_metric(metric).is_displayed()) self.basic_wait(selector, False) self.close_metrics_menu()
def close_cookie_popup(self): selector = CLOSE_COOKIE_POPUP_BUTTON try: WebDriverWait( self.driver, 5).until(lambda wd: self.driver.find_element_by_css_selector( selector).is_displayed()) except TimeoutException: return button = self.driver.find_element_by_css_selector(selector) safe_click(button) self.wait.until_not( lambda wd: self.driver.find_element_by_css_selector( selector).is_displayed())
def delete_draft(self, draft, do_delete): number_of_drafts_initial = len(self.get_drafts()) safe_click(self.get_delete_draft_button(draft)) self.wait.until( lambda wd: self.get_delete_draft_dialog(draft).is_displayed()) dialog = self.get_delete_draft_dialog(draft) button = self.get_delete_draft_confirm_button( dialog) if do_delete else self.get_delete_draft_cancel_button( dialog) safe_click(button) self.wait.until_not(lambda wd: wd.find_element_by_css_selector( DRAFT_DELETE_DIALOG).is_displayed()) if do_delete: self.wait.until(lambda wd: len(self.get_drafts()) == number_of_drafts_initial - 1)
def clear_tags(self): safe_click(self.get_clear_tags_button()) self.wait.until(lambda wd: len(self.get_selected_tags()) == 0) self.wait.until_not(lambda wd: wd.find_element_by_css_selector( EDITOR_PUBLISH_INSIGHT_LOADER).is_displayed())
def open_account_menu(self): selector = ACCOUNT_MENU button = self.get_account_menu_button() safe_click(button) self.basic_wait(selector, True)
def write_insight_body(self, body): safe_click(self.get_editor_body()) body_input = self.driver.switch_to.active_element body_input.send_keys(body)
def open_editor(self): try: self.get_editor_title() except NoSuchElementException: safe_click(self.get_write_insight_button()) self.wait.until(lambda wd: self.get_editor_title().is_displayed())
def preview_draft(self, draft): draft_title = self.get_draft_title(draft).text safe_click(self.get_draft_title(draft)) self.wait.until(lambda wd: self.get_read_title().text == draft_title)
def publish_insight(self): self.open_publish_menu() safe_click(self.get_publish_insight_button()) self.wait.until(lambda wd: self.get_active_tab().text == 'My Insights')
def read_insight(self, insight): safe_click(self.get_insight_title(insight)) self.wait.until(lambda wd: self.get_read_title().is_displayed())
def filter_insights_by_author(self, insight): author_element = self.get_insight_author(insight) author = author_element.text safe_click(author_element) self.wait_until_tab_is_active('All Insights') return author
def edit_draft(self, draft): safe_click(self.get_edit_draft_button(draft)) self.wait.until(lambda wd: self.get_editor_title().is_displayed())
def select_metrics_category(self, category): selector = METRICS_MENU_LOADER safe_click(self.get_metrics_category(category)) self.wait.until(lambda wd: category.lower() in self. get_metrics_category_active().text.lower()) self.basic_wait(selector, False)
def select_period(self, period): selector = CHART_LOADER period_selector = self.get_period(period) safe_click(period_selector) self.wait.until(lambda wd: self.get_active_period().text == period) self.basic_wait(selector, False)