def expand_database_node(self, server_name, server_password, name_of_database): """will expand database node under databases node""" db_node_expanded_status = False if self.expand_databases_node(server_name, server_password): sub_nodes_of_databases_node = self.find_by_xpath_list( TreeAreaLocators.sub_nodes_of_databases_node(server_name)) index_of_required_db_node = self.get_index_of_element( sub_nodes_of_databases_node, name_of_database) expansion_status = self.get_expansion_status_of_node_element( self.find_by_xpath_list( TreeAreaLocators.sub_nodes_of_databases_node_exp_status( server_name))[index_of_required_db_node]) if not expansion_status: self.driver.execute_script( "arguments[0].scrollIntoView()", sub_nodes_of_databases_node[index_of_required_db_node]) webdriver.ActionChains(self.driver).double_click( sub_nodes_of_databases_node[index_of_required_db_node] ).perform() if self.wait_for_elements_to_appear( self.driver, TreeAreaLocators.sub_nodes_of_database_node( name_of_database)): db_node_expanded_status = True else: db_node_expanded_status = True else: print("The databases/previous nodes not expanded", file=sys.stderr) return db_node_expanded_status
def _check_datatype(self): # Slick grid does not render all the column if viewport is not enough # wide. So execute test as batch of queries. self.page.click_a_tree_node( self.test_db, TreeAreaLocators.sub_nodes_of_databases_node(self.server['name'])) self.page.open_query_tool() self._create_enum_type() for batch in config_data: query = self.construct_select_query(batch) self.page.execute_query(query) wait = WebDriverWait(self.page.driver, 5) # wait for the visibility of the grid to appear wait.until( EC.visibility_of_element_located( (By.XPATH, "//*[contains(@class,'column-type')]"))) wait.until( EC.visibility_of_element_located( (By.XPATH, "//*[contains(@class,'column-type') and " "contains(.,'{}')]".format(batch['datatype'][0])))) canvas = wait.until( EC.presence_of_element_located( (By.CSS_SELECTOR, QueryToolLocators.query_output_canvas_css))) # For every sample data-type value, check the expected output. cnt = 2 cells = canvas.find_elements_by_css_selector( QueryToolLocators.query_output_cells) # remove first element as it is row number. cells.pop(0) for val, cell, datatype in zip(batch['output'], cells, batch['datatype']): expected_output = batch['output'][cnt - 2] if not self._is_datatype_available_in_current_database( datatype): cnt += 1 continue if datatype in ('tstzrange', 'tstzrange[]'): expected_output = expected_output.format( **dict([('tz', self.timezone_hh_mm)])) try: source_code = cell.text PGDataypeFeatureTest.check_result(datatype, source_code, expected_output) cnt += 1 except TimeoutException: assert False,\ "for datatype {0}\n{1} does not match with {2}".format( datatype, val, expected_output ) self.page.clear_query_tool()
def test_view_data_tool_button(self): self.page.click_a_tree_node( self.test_db, TreeAreaLocators.sub_nodes_of_databases_node(self.server['name'])) self.page.toggle_open_schema_node(self.server['name'], self.server['db_password'], self.test_db, 'public') self.page.toggle_open_tables_node(self.server['name'], self.server['db_password'], self.test_db, 'public') self.page.click_a_tree_node(self.test_table_name, TreeAreaLocators.sub_nodes_of_tables_node) self.page.retry_click( (By.CSS_SELECTOR, BrowserToolBarLocators.view_table_data_button_css), (By.CSS_SELECTOR, BrowserToolBarLocators.view_data_panel_css))
def expand_database_node(self, server_name, server_password, name_of_database): """will expand database node under databases node""" db_node_expanded_status = False retry = 5 if self.expand_databases_node(server_name, server_password): sub_nodes_of_databases_node = self.find_by_xpath_list( TreeAreaLocators.sub_nodes_of_databases_node(server_name)) index_of_required_db_node = self.get_index_of_element( sub_nodes_of_databases_node, name_of_database) expansion_status = self.get_expansion_status_of_node_element( self.find_by_xpath_list( TreeAreaLocators.sub_nodes_of_databases_node_exp_status( server_name))[index_of_required_db_node]) if not expansion_status: self.driver.execute_script( "arguments[0].scrollIntoView()", sub_nodes_of_databases_node[index_of_required_db_node]) while retry > 0: webdriver.ActionChains(self.driver).double_click( sub_nodes_of_databases_node[index_of_required_db_node] ).perform() if self.check_if_element_exist_by_xpath( "//div[@class='ajs-header'and text()='INTERNAL SERVER " "ERROR']", 1): try: self.click_modal('OK') except Exception: pass retry -= 1 else: break if self.wait_for_elements_to_appear( self.driver, TreeAreaLocators.sub_nodes_of_database_node( name_of_database)): db_node_expanded_status = True else: db_node_expanded_status = True else: print("The databases/previous nodes not expanded", file=sys.stderr) return db_node_expanded_status
def expand_databases_node(self, server_name, server_password): """will expand databases node under server node""" databases_node_expanded = False if self.expand_server_node(server_name, server_password): if self.wait_for_elements_to_appear( self.driver, TreeAreaLocators.sub_nodes_of_a_server_node(server_name)): subnodes_of_server_node = self.find_by_xpath_list( TreeAreaLocators.sub_nodes_of_a_server_node(server_name)) subnode_of_server_node_exp_status = self.find_by_xpath_list( TreeAreaLocators.sub_nodes_of_a_server_node_exp_status( server_name)) index_of_databases_node = self.get_index_of_element( subnodes_of_server_node, "Databases") time.sleep(2) expansion_status = self.get_expansion_status_of_node_element( subnode_of_server_node_exp_status[index_of_databases_node]) if not expansion_status: retry = 5 while retry > 0: webdriver.ActionChains(self.driver).double_click( subnodes_of_server_node[index_of_databases_node]. find_element_by_xpath( ".//*[@class='aciTreeItem']")).perform() if self.wait_for_elements_to_appear( self.driver, TreeAreaLocators.sub_nodes_of_databases_node( server_name), 3): databases_node_expanded = True break else: retry -= 1 else: databases_node_expanded = True else: print("The server/previous nodes not expanded", file=sys.stderr) return databases_node_expanded