Skip to content

Commit a14b74f

Browse files
committed
Improve uc_gui_click_x_y()
1 parent 9981b5f commit a14b74f

File tree

1 file changed

+39
-1
lines changed

1 file changed

+39
-1
lines changed

seleniumbase/core/browser_launcher.py

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -718,7 +718,44 @@ def _uc_gui_click_x_y(driver, x, y, timeframe=0.25, uc_lock=False):
718718

719719

720720
def uc_gui_click_x_y(driver, x, y, timeframe=0.25):
721-
_uc_gui_click_x_y(driver, x, y, timeframe=timeframe, uc_lock=True)
721+
gui_lock = fasteners.InterProcessLock(
722+
constants.MultiBrowser.PYAUTOGUILOCK
723+
)
724+
with gui_lock: # Prevent issues with multiple processes
725+
install_pyautogui_if_missing(driver)
726+
import pyautogui
727+
pyautogui = get_configured_pyautogui(pyautogui)
728+
if IS_WINDOWS:
729+
width_ratio = 1.0
730+
window_rect = driver.get_window_rect()
731+
width = window_rect["width"]
732+
height = window_rect["height"]
733+
win_x = window_rect["x"]
734+
win_y = window_rect["y"]
735+
if (
736+
hasattr(sb_config, "_saved_width_ratio")
737+
and sb_config._saved_width_ratio
738+
):
739+
width_ratio = sb_config._saved_width_ratio
740+
else:
741+
scr_width = pyautogui.size().width
742+
driver.maximize_window()
743+
win_width = driver.get_window_size()["width"]
744+
width_ratio = round(float(scr_width) / float(win_width), 2)
745+
width_ratio += 0.01
746+
if width_ratio < 0.45 or width_ratio > 2.55:
747+
width_ratio = 1.01
748+
sb_config._saved_width_ratio = width_ratio
749+
driver.minimize_window()
750+
driver.set_window_rect(win_x, win_y, width, height)
751+
x = x * width_ratio
752+
y = y * width_ratio
753+
_uc_gui_click_x_y(driver, x, y, timeframe=timeframe, uc_lock=False)
754+
return
755+
page_actions.switch_to_window(
756+
driver, driver.current_window_handle, 2, uc_lock=False
757+
)
758+
_uc_gui_click_x_y(driver, x, y, timeframe=timeframe, uc_lock=False)
722759

723760

724761
def _on_a_cf_turnstile_page(driver):
@@ -804,6 +841,7 @@ def _uc_gui_click_captcha(
804841
width_ratio = round(float(scr_width) / float(win_width), 2) + 0.01
805842
if width_ratio < 0.45 or width_ratio > 2.55:
806843
width_ratio = 1.01
844+
sb_config._saved_width_ratio = width_ratio
807845
driver.minimize_window()
808846
driver.set_window_rect(win_x, win_y, width, height)
809847
if ctype == "cf_t":

0 commit comments

Comments
 (0)