Skip to content

Commit ac26b08

Browse files
committed
Update CDP Mode
1 parent 667602c commit ac26b08

File tree

4 files changed

+29
-5
lines changed

4 files changed

+29
-5
lines changed

seleniumbase/core/browser_launcher.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -606,6 +606,9 @@ def uc_open_with_cdp_mode(driver, url=None):
606606
cdp.click_nth_element = CDPM.click_nth_element
607607
cdp.click_nth_visible_element = CDPM.click_nth_visible_element
608608
cdp.click_link = CDPM.click_link
609+
cdp.go_back = CDPM.go_back
610+
cdp.go_forward = CDPM.go_forward
611+
cdp.get_navigation_history = CDPM.get_navigation_history
609612
cdp.tile_windows = CDPM.tile_windows
610613
cdp.get_all_cookies = CDPM.get_all_cookies
611614
cdp.set_all_cookies = CDPM.set_all_cookies
@@ -1419,11 +1422,8 @@ def _uc_gui_handle_captcha_(driver, frame="iframe", ctype=None):
14191422
page_actions.switch_to_window(
14201423
driver, driver.current_window_handle, 2, uc_lock=False
14211424
)
1422-
if (
1423-
IS_WINDOWS
1424-
and hasattr(pyautogui, "getActiveWindowTitle")
1425-
):
1426-
py_a_g_title = pyautogui.getActiveWindowTitle()
1425+
if IS_WINDOWS and hasattr(pyautogui, "getActiveWindowTitle"):
1426+
py_a_g_title = pyautogui.getActiveWindowTitle() or ""
14271427
window_title = driver.get_title()
14281428
if not py_a_g_title.startswith(window_title):
14291429
window_rect = driver.get_window_rect()

seleniumbase/core/sb_cdp.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,15 @@ def click_nth_visible_element(self, selector, number):
289289
def click_link(self, link_text):
290290
self.find_elements_by_text(link_text, "a")[0].click()
291291

292+
def go_back(self):
293+
self.loop.run_until_complete(self.page.back())
294+
295+
def go_forward(self):
296+
self.loop.run_until_complete(self.page.forward())
297+
298+
def get_navigation_history(self):
299+
return self.loop.run_until_complete(self.page.get_navigation_history())
300+
292301
def __clear_input(self, element):
293302
return (
294303
self.loop.run_until_complete(element.clear_input_async())

seleniumbase/fixtures/base_case.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1323,6 +1323,9 @@ def get_locale_code(self):
13231323

13241324
def go_back(self):
13251325
self.__check_scope()
1326+
if self.__is_cdp_swap_needed():
1327+
self.cdp.go_back()
1328+
return
13261329
if hasattr(self, "recorder_mode") and self.recorder_mode:
13271330
self.save_recorded_actions()
13281331
pre_action_url = None
@@ -1348,6 +1351,9 @@ def go_back(self):
13481351

13491352
def go_forward(self):
13501353
self.__check_scope()
1354+
if self.__is_cdp_swap_needed():
1355+
self.cdp.go_forward()
1356+
return
13511357
if hasattr(self, "recorder_mode") and self.recorder_mode:
13521358
self.save_recorded_actions()
13531359
self.__last_page_load_url = None
@@ -1732,6 +1738,9 @@ def click_partial_link_text(self, partial_link_text, timeout=None):
17321738
if self.timeout_multiplier and timeout == settings.SMALL_TIMEOUT:
17331739
timeout = self.__get_new_timeout(timeout)
17341740
partial_link_text = self.__get_type_checked_text(partial_link_text)
1741+
if self.__is_cdp_swap_needed():
1742+
self.cdp.find_element(partial_link_text, timeout=timeout).click()
1743+
return
17351744
if not self.is_partial_link_text_present(partial_link_text):
17361745
self.wait_for_partial_link_text_present(
17371746
partial_link_text, timeout=timeout
@@ -8133,6 +8142,8 @@ def is_connected(self):
81338142
def is_chromium(self):
81348143
"""Return True if the browser is Chrome or Edge."""
81358144
self.__check_scope()
8145+
if self.__is_cdp_swap_needed():
8146+
return True
81368147
chromium = False
81378148
if (
81388149
"chrome" in self.driver.capabilities

seleniumbase/undetected/cdp_driver/tab.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -636,6 +636,10 @@ async def forward(self):
636636
"""History forward"""
637637
await self.send(cdp.runtime.evaluate("window.history.forward()"))
638638

639+
async def get_navigation_history(self):
640+
"""Get Navigation History"""
641+
return await self.send(cdp.page.get_navigation_history())
642+
639643
async def reload(
640644
self,
641645
ignore_cache: Optional[bool] = True,

0 commit comments

Comments
 (0)