Skip to content

Commit 111f8ee

Browse files
committed
Improve UC Mode methods
1 parent aed62a4 commit 111f8ee

File tree

1 file changed

+36
-54
lines changed

1 file changed

+36
-54
lines changed

seleniumbase/core/browser_launcher.py

Lines changed: 36 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -861,10 +861,19 @@ def _uc_gui_click_captcha(
861861
visible_iframe = False
862862
if (
863863
frame != "iframe"
864-
and driver.is_element_present('[name*="cf-turnstile-"]')
865-
and driver.is_element_present("%s div[style]" % frame)
864+
and driver.is_element_present(
865+
"%s .cf-turnstile-wrapper" % frame
866+
)
867+
):
868+
frame = "%s .cf-turnstile-wrapper" % frame
869+
elif (
870+
frame != "iframe"
871+
and driver.is_element_present(
872+
'%s [name*="cf-turnstile"]' % frame
873+
)
874+
and driver.is_element_present("%s div" % frame)
866875
):
867-
frame = "%s div[style]" % frame
876+
frame = "%s div" % frame
868877
elif (
869878
driver.is_element_present('[name*="cf-turnstile-"]')
870879
and driver.is_element_present("div.spacer div")
@@ -877,47 +886,21 @@ def _uc_gui_click_captcha(
877886
)
878887
):
879888
frame = '[data-testid*="challenge-"] div'
880-
elif (
881-
(
882-
driver.is_element_present('[name*="cf-turnstile-"]')
883-
or driver.is_element_present('[id*="cf-turnstile-"]')
884-
)
885-
and driver.is_element_present(
886-
'form div div[style*="margin"][style*="padding"]'
887-
)
888-
):
889-
frame = 'form div div[style*="margin"][style*="padding"]'
890-
elif (
891-
frame != "iframe"
892-
and driver.is_element_present(
893-
"%s .cf-turnstile-wrapper" % frame
894-
)
889+
elif driver.is_element_present(
890+
'form div:not([class]):has(input[name*="cf-turn"])'
895891
):
896-
frame = "%s .cf-turnstile-wrapper" % frame
892+
frame = 'form div:not([class]):has(input[name*="cf-turn"])'
897893
elif (
898-
frame != "iframe"
899-
and driver.is_element_present(
900-
'%s [name*="cf-turnstile"]' % frame
901-
)
902-
and driver.is_element_present("%s div" % frame)
894+
driver.is_element_present('[src*="/turnstile/"]')
895+
and driver.is_element_present("form div:not(:has(*))")
903896
):
904-
frame = "%s div" % frame
897+
frame = "form div:not(:has(*))"
905898
elif driver.is_element_present(".cf-turnstile-wrapper"):
906899
frame = ".cf-turnstile-wrapper"
907900
elif driver.is_element_present(
908901
'[data-callback="onCaptchaSuccess"]'
909902
):
910903
frame = '[data-callback="onCaptchaSuccess"]'
911-
elif (
912-
(
913-
driver.is_element_present('[name*="cf-turnstile-"]')
914-
or driver.is_element_present('[id*="cf-turnstile-"]')
915-
)
916-
and driver.is_element_present(
917-
'div > div > [style*="margin"][style*="padding"]'
918-
)
919-
):
920-
frame = 'div > div > [style*="margin"][style*="padding"]'
921904
else:
922905
return
923906
if driver.is_element_present('form[class*=center]'):
@@ -1100,6 +1083,8 @@ def _uc_gui_handle_captcha(
11001083
driver.minimize_window()
11011084
driver.set_window_rect(win_x, win_y, width, height)
11021085
time.sleep(0.33)
1086+
tab_up_first = False
1087+
special_form = False
11031088
if ctype == "cf_t":
11041089
if (
11051090
driver.is_element_present(".cf-turnstile-wrapper iframe")
@@ -1128,26 +1113,18 @@ def _uc_gui_handle_captcha(
11281113
)
11291114
):
11301115
frame = '[data-testid*="challenge-"] div'
1131-
elif (
1132-
(
1133-
driver.is_element_present('[name*="cf-turnstile-"]')
1134-
or driver.is_element_present('[id*="cf-turnstile-"]')
1135-
)
1136-
and driver.is_element_present(
1137-
'form div div[style*="margin"][style*="padding"]'
1138-
)
1116+
elif driver.is_element_present(
1117+
'form div:not([class]):has(input[name*="cf-turn"])'
11391118
):
1140-
frame = 'form div div[style*="margin"][style*="padding"]'
1119+
frame = 'form div:not([class]):has(input[name*="cf-turn"])'
1120+
tab_up_first = True
1121+
special_form = True
11411122
elif (
1142-
(
1143-
driver.is_element_present('[name*="cf-turnstile-"]')
1144-
or driver.is_element_present('[id*="cf-turnstile-"]')
1145-
)
1146-
and driver.is_element_present(
1147-
'div > div > [style*="margin"][style*="padding"]'
1148-
)
1123+
driver.is_element_present('[src*="/turnstile/"]')
1124+
and driver.is_element_present("form div:not(:has(*))")
11491125
):
1150-
frame = 'div > div > [style*="margin"][style*="padding"]'
1126+
frame = "form div:not(:has(*))"
1127+
tab_up_first = True
11511128
else:
11521129
return
11531130
else:
@@ -1172,13 +1149,18 @@ def _uc_gui_handle_captcha(
11721149
if ctype == "g_rc":
11731150
selector = "span#recaptcha-anchor"
11741151
found_checkbox = False
1175-
for i in range(24):
1152+
if tab_up_first:
1153+
for i in range(10):
1154+
pyautogui.hotkey("shift", "tab")
1155+
time.sleep(0.027)
1156+
for i in range(34):
11761157
pyautogui.press("\t")
1177-
time.sleep(0.02)
1158+
time.sleep(0.027)
11781159
active_element_css = js_utils.get_active_element_css(driver)
11791160
if (
11801161
active_element_css.startswith(selector)
11811162
or active_element_css.endswith(" > div" * 2)
1163+
or (special_form and active_element_css.endswith(" div"))
11821164
):
11831165
found_checkbox = True
11841166
break

0 commit comments

Comments
 (0)