@@ -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