Skip to content

Commit 3d0a643

Browse files
committed
Add "hover_and_js_click(h_selector, c_selector)"
1 parent 21e70ff commit 3d0a643

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

help_docs/method_summary.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,11 @@ self.hover(selector, by="css selector", timeout=None)
171171
# self.hover_over_element(selector, by="css selector", timeout=None)
172172

173173
self.hover_and_click(
174+
hover_selector, click_selector,
175+
hover_by="css selector", click_by="css selector",
176+
timeout=None, js_click=False)
177+
178+
self.hover_and_js_click(
174179
hover_selector, click_selector,
175180
hover_by="css selector", click_by="css selector",
176181
timeout=None)

seleniumbase/fixtures/base_case.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2508,6 +2508,7 @@ def hover_and_click(
25082508
hover_by="css selector",
25092509
click_by="css selector",
25102510
timeout=None,
2511+
js_click=False,
25112512
):
25122513
"""When you want to hover over an element or dropdown menu,
25132514
and then click an element that appears after that."""
@@ -2578,6 +2579,7 @@ def hover_and_click(
25782579
hover_by,
25792580
click_by,
25802581
timeout,
2582+
js_click,
25812583
)
25822584
latest_window_count = len(self.driver.window_handles)
25832585
if (
@@ -2608,6 +2610,23 @@ def hover_and_click(
26082610
self.__slow_mode_pause_if_active()
26092611
return element
26102612

2613+
def hover_and_js_click(
2614+
self,
2615+
hover_selector,
2616+
click_selector,
2617+
hover_by="css selector",
2618+
click_by="css selector",
2619+
timeout=None,
2620+
):
2621+
self.hover_and_click(
2622+
hover_selector=hover_selector,
2623+
click_selector=click_selector,
2624+
hover_by=hover_by,
2625+
click_by=click_by,
2626+
timeout=timeout,
2627+
js_click=True,
2628+
)
2629+
26112630
def hover_and_double_click(
26122631
self,
26132632
hover_selector,

seleniumbase/fixtures/page_actions.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,7 @@ def hover_and_click(
270270
hover_by="css selector",
271271
click_by="css selector",
272272
timeout=settings.SMALL_TIMEOUT,
273+
js_click=False,
273274
):
274275
"""
275276
Fires the hover event for a specified element by a given selector, then
@@ -281,6 +282,7 @@ def hover_and_click(
281282
hover_by - the hover selector type to search by (Default: "css selector")
282283
click_by - the click selector type to search by (Default: "css selector")
283284
timeout - number of seconds to wait for click element to appear after hover
285+
js_click - the option to use js_click() instead of click() on the last part
284286
"""
285287
start_ms = time.time() * 1000.0
286288
stop_ms = start_ms + (timeout * 1000.0)
@@ -290,7 +292,10 @@ def hover_and_click(
290292
try:
291293
hover.perform()
292294
element = driver.find_element(by=click_by, value=click_selector)
293-
element.click()
295+
if js_click:
296+
driver.execute_script("arguments[0].click();", element)
297+
else:
298+
element.click()
294299
return element
295300
except Exception:
296301
now_ms = time.time() * 1000.0

0 commit comments

Comments
 (0)