MCPcopy Create free account
hub / github.com/seleniumbase/SeleniumBase / hover_and_click

Method hover_and_click

seleniumbase/fixtures/base_case.py:2754–2864  ·  view source on GitHub ↗

When you want to hover over an element or dropdown menu, and then click an element that appears after that.

(
        self,
        hover_selector,
        click_selector,
        hover_by="css selector",
        click_by="css selector",
        timeout=None,
        js_click=False,
    )

Source from the content-addressed store, hash-verified

2752 return element
2753
2754 def hover_and_click(
2755 self,
2756 hover_selector,
2757 click_selector,
2758 hover_by="css selector",
2759 click_by="css selector",
2760 timeout=None,
2761 js_click=False,
2762 ):
2763 """When you want to hover over an element or dropdown menu,
2764 and then click an element that appears after that."""
2765 self.__check_scope()
2766 if not timeout:
2767 timeout = settings.SMALL_TIMEOUT
2768 if self.timeout_multiplier and timeout == settings.SMALL_TIMEOUT:
2769 timeout = self.__get_new_timeout(timeout)
2770 original_selector = hover_selector
2771 original_by = hover_by
2772 hover_selector, hover_by = self.__recalculate_selector(
2773 hover_selector, hover_by
2774 )
2775 original_click_selector = click_selector
2776 click_selector, click_by = self.__recalculate_selector(
2777 click_selector, click_by
2778 )
2779 if self.__is_cdp_swap_needed():
2780 self.cdp.hover_and_click(hover_selector, click_selector)
2781 return
2782 dropdown_element = self.wait_for_element_visible(
2783 original_selector, by=original_by, timeout=timeout
2784 )
2785 self.__demo_mode_highlight_if_active(original_selector, original_by)
2786 self.scroll_to(hover_selector, by=hover_by)
2787 pre_action_url = None
2788 with suppress(Exception):
2789 pre_action_url = self.driver.current_url
2790 pre_window_count = len(self.driver.window_handles)
2791 if self.recorder_mode and self.__current_url_is_recordable():
2792 if self.get_session_storage_item("pause_recorder") == "no":
2793 if hover_by == By.XPATH:
2794 hover_selector = original_selector
2795 if click_by == By.XPATH:
2796 click_selector = original_click_selector
2797 time_stamp = self.execute_script("return Date.now();")
2798 origin = self.get_origin()
2799 the_selectors = [hover_selector, click_selector]
2800 action = ["ho_cl", the_selectors, origin, time_stamp]
2801 self.__extra_actions.append(action)
2802 outdated_driver = False
2803 element = None
2804 try:
2805 if self.mobile_emulator:
2806 # On mobile, click to hover the element
2807 dropdown_element.click()
2808 else:
2809 page_actions.hover_element(self.driver, dropdown_element)
2810 except Exception:
2811 outdated_driver = True

Callers 1

hover_and_js_clickMethod · 0.95

Calls 15

__check_scopeMethod · 0.95
__get_new_timeoutMethod · 0.95
__is_cdp_swap_neededMethod · 0.95
scroll_toMethod · 0.95
execute_scriptMethod · 0.95
get_originMethod · 0.95
clickMethod · 0.95

Tested by

no test coverage detected