Skip to content

Commit 69776d7

Browse files
committed
Update CDP Mode
1 parent f7442b9 commit 69776d7

File tree

5 files changed

+46
-22
lines changed

5 files changed

+46
-22
lines changed

seleniumbase/core/browser_launcher.py

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1410,14 +1410,10 @@ def _uc_gui_click_captcha(
14101410
and driver.is_element_present("%s div" % frame)
14111411
):
14121412
frame = "%s div" % frame
1413-
elif (
1414-
driver.is_element_present('[name*="cf-turnstile-"]')
1415-
and driver.is_element_present("#challenge-form div > div")
1416-
):
1413+
elif driver.is_element_present("#challenge-form div > div"):
14171414
frame = "#challenge-form div > div"
14181415
elif (
1419-
driver.is_element_present('[name*="cf-turnstile-"]')
1420-
and driver.is_element_present(
1416+
driver.is_element_present(
14211417
'[style="display: grid;"] div div'
14221418
)
14231419
):
@@ -1430,13 +1426,11 @@ def _uc_gui_click_captcha(
14301426
):
14311427
frame = '.spacer + div div:not([class])'
14321428
elif (
1433-
driver.is_element_present('[name*="cf-turnstile-"]')
1434-
and driver.is_element_present(".spacer div:not([class])")
1429+
driver.is_element_present(".spacer div:not([class])")
14351430
):
14361431
frame = ".spacer div:not([class])"
14371432
elif (
1438-
driver.is_element_present('script[src*="challenges.c"]')
1439-
and driver.is_element_present(
1433+
driver.is_element_present(
14401434
'[data-testid*="challenge-"] div'
14411435
)
14421436
):

seleniumbase/core/sb_cdp.py

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"""Add CDP methods to extend the driver"""
22
import asyncio
33
import fasteners
4+
import mycdp
45
import os
56
import random
67
import re
@@ -15,6 +16,7 @@
1516
from seleniumbase.fixtures import page_utils
1617
from seleniumbase.fixtures import shared_utils
1718
from seleniumbase.undetected.cdp_driver import cdp_util
19+
from seleniumbase.undetected.cdp_driver import tab as cdp_tab
1820

1921

2022
class CDPMethods():
@@ -1122,9 +1124,33 @@ def switch_to_newest_window(self):
11221124
self.switch_to_tab(-1)
11231125

11241126
def open_new_tab(self, url=None, switch_to=True):
1127+
driver = self.driver
11251128
if not isinstance(url, str):
11261129
url = "about:blank"
1127-
self.loop.run_until_complete(self.page.get(url, new_tab=True))
1130+
if hasattr(driver, "cdp_base"):
1131+
self.loop.run_until_complete(self.page.get(url, new_tab=True))
1132+
if switch_to:
1133+
self.switch_to_newest_tab()
1134+
return
1135+
1136+
target_id = self.loop.run_until_complete(
1137+
self.page.send(mycdp.target.create_target(url))
1138+
)
1139+
found_target = None
1140+
targets = self.loop.run_until_complete(
1141+
self.page.send(mycdp.target.get_targets())
1142+
)
1143+
for target in targets:
1144+
if str(target_id) in str(target):
1145+
found_target = target
1146+
break
1147+
if found_target:
1148+
tab_url = driver.tabs[0].websocket_url
1149+
pre_tab_url = tab_url.split("/page/")[0] + "/page/"
1150+
new_tab_url = pre_tab_url + target_id
1151+
new_tab = cdp_tab.Tab(new_tab_url, found_target, driver)
1152+
driver.targets.append(new_tab)
1153+
driver.tabs.append(new_tab)
11281154
if switch_to:
11291155
self.switch_to_newest_tab()
11301156

seleniumbase/core/sb_driver.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -288,11 +288,8 @@ def highlight(self, *args, **kwargs):
288288
selector = kwargs["selector"]
289289
else:
290290
selector = args[0]
291-
if ":contains(" not in selector:
292-
self.driver.cdp.highlight(selector)
293-
return
294-
else:
295-
self.driver.connect()
291+
self.driver.cdp.highlight(selector)
292+
return
296293
if "scroll" in kwargs:
297294
kwargs.pop("scroll")
298295
w_args = kwargs.copy()

seleniumbase/fixtures/base_case.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -230,15 +230,16 @@ def open(self, url):
230230
elif (
231231
hasattr(self.driver, "_is_using_uc")
232232
and self.driver._is_using_uc
233-
and hasattr(self.driver, "_is_using_auth")
234-
and self.driver._is_using_auth
233+
# and hasattr(self.driver, "_is_using_auth")
234+
# and self.driver._is_using_auth
235235
and (
236236
not hasattr(self.driver, "_is_using_cdp")
237237
or not self.driver._is_using_cdp
238238
)
239239
):
240240
# Auth in UC Mode requires CDP Mode
241-
logging.info("UC Mode requires CDP Mode for auth. Activating now.")
241+
# (and now we're always forcing it)
242+
logging.info("open() in UC Mode now always activates CDP Mode.")
242243
self.activate_cdp_mode(url)
243244
return
244245
elif (
@@ -6313,7 +6314,12 @@ def highlight(
63136314
scroll - the option to scroll to the element first (Default: True)
63146315
timeout - the time to wait for the element to appear """
63156316
self.__check_scope()
6316-
if not self.__is_cdp_swap_needed():
6317+
if self.__is_cdp_swap_needed():
6318+
if page_utils.is_xpath_selector(selector):
6319+
if "contains(" in selector:
6320+
self.cdp.highlight(selector)
6321+
return
6322+
else:
63176323
self._check_browser()
63186324
self.__skip_if_esc()
63196325
if isinstance(selector, WebElement):

seleniumbase/fixtures/page_actions.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1759,14 +1759,15 @@ def open_url(driver, url):
17591759
elif (
17601760
hasattr(driver, "_is_using_uc")
17611761
and driver._is_using_uc
1762-
and hasattr(driver, "_is_using_auth")
1763-
and driver._is_using_auth
1762+
# and hasattr(driver, "_is_using_auth")
1763+
# and driver._is_using_auth
17641764
and (
17651765
not hasattr(driver, "_is_using_cdp")
17661766
or not driver._is_using_cdp
17671767
)
17681768
):
17691769
# Auth in UC Mode requires CDP Mode
1770+
# (and now we're always forcing it)
17701771
driver.uc_activate_cdp_mode(url)
17711772
return
17721773
elif (

0 commit comments

Comments
 (0)