def select_member_by_num(self, num): """Select member from list of members by number (start from 0). Args: num (int) Return: lib.page.widget.info.Widget """ # pylint: disable=not-callable selenium_utils.wait_for_js_to_load(self._driver) self._set_members_listed() # need "try-except" block due to issue GGRC-1675 try: member = self.members_listed[num] # wait for the listed items animation to stop selenium_utils.wait_until_stops_moving(member) selenium_utils.click_via_js(self._driver, member) # wait for the info pane animation to stop info_panel = selenium_utils.get_when_clickable( self._driver, locator.ObjectWidget.INFO_PANE) selenium_utils.wait_until_stops_moving(info_panel) except exceptions.StaleElementReferenceException: self.members_listed = self._driver.find_elements( *locator.ObjectWidget.MEMBERS_TITLE_LIST) return self.select_member_by_num(num) except exceptions.TimeoutException: # sometimes the click to the listed member results in hover return self.select_member_by_num(num) return self.info_widget_cls(self._driver)
def select_member_by_num(self, num): """Select member from list of members by number (start from 0). Args: num (int) Return: lib.page.widget.info.Widget """ # pylint: disable=not-callable selenium_utils.wait_for_js_to_load(self._driver) self._set_members_listed() try: member = self.members_listed[num] # wait for the listed items animation to stop selenium_utils.wait_until_stops_moving(member) selenium_utils.click_via_js(self._driver, member) # wait for the info pane animation to stop info_panel = selenium_utils.get_when_clickable( self._driver, locator.ObjectWidget.INFO_PANE) selenium_utils.wait_until_stops_moving(info_panel) return self.info_widget_cls(self._driver) except exceptions.StaleElementReferenceException: self.members_listed = self._driver.find_elements( *locator.ObjectWidget.MEMBERS_TITLE_LIST) return self.select_member_by_num(num) except exceptions.TimeoutException: # sometimes the click to the listed member results in hover return self.select_member_by_num(num)
def click_via_js(self): """Click on element using JS.""" selenium_utils.click_via_js(self._driver, self.element)