Skip to content

Commit 8941335

Browse files
committed
Update UC Mode
1 parent 924bcf3 commit 8941335

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

seleniumbase/core/browser_launcher.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -680,6 +680,8 @@ def get_gui_element_position(driver, selector):
680680
viewport_height = driver.execute_script("return window.innerHeight;")
681681
viewport_x = window_rect["x"] + element_rect["x"]
682682
viewport_y = window_bottom_y - viewport_height + element_rect["y"]
683+
y_scroll_offset = driver.execute_script("return window.pageYOffset;")
684+
viewport_y = viewport_y - y_scroll_offset
683685
return (viewport_x, viewport_y)
684686

685687

@@ -688,7 +690,7 @@ def _uc_gui_click_x_y(driver, x, y, timeframe=0.25, uc_lock=False):
688690
import pyautogui
689691
pyautogui = get_configured_pyautogui(pyautogui)
690692
screen_width, screen_height = pyautogui.size()
691-
if x > screen_width or y > screen_height:
693+
if x < 0 or y < 0 or x > screen_width or y > screen_height:
692694
raise Exception(
693695
"PyAutoGUI cannot click on point (%s, %s)"
694696
" outside screen. (Width: %s, Height: %s)"
@@ -807,6 +809,16 @@ def _uc_gui_click_captcha(
807809
frame = '[data-callback="onCaptchaSuccess"]'
808810
else:
809811
return
812+
if driver.is_element_present('form[class*=center]'):
813+
script = (
814+
"""var $elements = document.querySelectorAll('form');
815+
var index = 0, length = $elements.length;
816+
for(; index < length; index++){
817+
the_class = $elements[index].getAttribute('class');
818+
new_class = the_class.replaceAll('center', 'left');
819+
$elements[index].setAttribute('class', new_class);}"""
820+
)
821+
driver.execute_script(script)
810822
if not is_in_frame or needs_switch:
811823
# Currently not in frame (or nested frame outside CF one)
812824
try:
@@ -977,7 +989,7 @@ def uc_gui_handle_cf(driver, frame="iframe"):
977989
return
978990
try:
979991
found_checkbox = False
980-
for i in range(10):
992+
for i in range(24):
981993
pyautogui.press("\t")
982994
time.sleep(0.02)
983995
active_element_css = js_utils.get_active_element_css(driver)
@@ -987,7 +999,6 @@ def uc_gui_handle_cf(driver, frame="iframe"):
987999
time.sleep(0.02)
9881000
if not found_checkbox:
9891001
return
990-
driver.execute_script('document.querySelector("input").focus()')
9911002
except Exception:
9921003
try:
9931004
driver.switch_to.default_content()

seleniumbase/fixtures/base_case.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3418,6 +3418,8 @@ def get_gui_element_rect(self, selector, by="css selector"):
34183418
viewport_height = self.execute_script("return window.innerHeight;")
34193419
x = math.ceil(window_rect["x"] + i_x + element_rect["x"])
34203420
y = math.ceil(w_bottom_y - viewport_height + i_y + element_rect["y"])
3421+
y_scroll_offset = self.execute_script("return window.pageYOffset;")
3422+
y = int(y - y_scroll_offset)
34213423
if iframe_switch:
34223424
self.switch_to_frame()
34233425
if not self.is_element_present(selector, by=by):

0 commit comments

Comments
 (0)