Skip to content

Commit 24f4a91

Browse files
authored
Merge pull request #3587 from seleniumbase/cdp-mode-patch-40
CDP Mode: Patch 40
2 parents a84f5c3 + dce8eb6 commit 24f4a91

File tree

8 files changed

+37
-4
lines changed

8 files changed

+37
-4
lines changed

examples/cdp_mode/ReadMe.md

+2
Original file line numberDiff line numberDiff line change
@@ -420,8 +420,10 @@ sb.cdp.minimize()
420420
sb.cdp.medimize()
421421
sb.cdp.set_window_rect()
422422
sb.cdp.reset_window_size()
423+
sb.cdp.open_new_window(url=None, switch_to=True)
423424
sb.cdp.switch_to_window(window)
424425
sb.cdp.switch_to_newest_window()
426+
sb.cdp.open_new_tab(url=None, switch_to=True)
425427
sb.cdp.switch_to_tab(tab)
426428
sb.cdp.switch_to_newest_tab()
427429
sb.cdp.close_active_tab()
+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from seleniumbase import SB
2+
3+
with SB(uc=True) as sb:
4+
sb.activate_cdp_mode()
5+
sb.open("data:text/html,<h1>Page A</h1>")
6+
sb.assert_text("Page A")
7+
sb.open_new_tab()
8+
sb.open("data:text/html,<h1>Page B</h1>")
9+
sb.assert_text("Page B")
10+
sb.switch_to_tab(0)
11+
sb.assert_text("Page A")
12+
sb.assert_text_not_visible("Page B")
13+
sb.switch_to_tab(1)
14+
sb.assert_text("Page B")
15+
sb.assert_text_not_visible("Page A")

seleniumbase/__version__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
# seleniumbase package
2-
__version__ = "4.35.3"
2+
__version__ = "4.35.4"

seleniumbase/core/browser_launcher.py

+2
Original file line numberDiff line numberDiff line change
@@ -682,8 +682,10 @@ def uc_open_with_cdp_mode(driver, url=None):
682682
cdp.gui_hover_element = CDPM.gui_hover_element
683683
cdp.gui_hover_and_click = CDPM.gui_hover_and_click
684684
cdp.internalize_links = CDPM.internalize_links
685+
cdp.open_new_window = CDPM.open_new_window
685686
cdp.switch_to_window = CDPM.switch_to_window
686687
cdp.switch_to_newest_window = CDPM.switch_to_newest_window
688+
cdp.open_new_tab = CDPM.open_new_tab
687689
cdp.switch_to_tab = CDPM.switch_to_tab
688690
cdp.switch_to_newest_tab = CDPM.switch_to_newest_tab
689691
cdp.close_active_tab = CDPM.close_active_tab

seleniumbase/core/sb_cdp.py

+11-1
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ def get(self, url):
106106
driver = self.driver
107107
if hasattr(driver, "cdp_base"):
108108
driver = driver.cdp_base
109-
self.page = self.loop.run_until_complete(driver.get(url))
109+
self.loop.run_until_complete(self.page.get(url))
110110
url_protocol = url.split(":")[0]
111111
safe_url = True
112112
if url_protocol not in ["about", "data", "chrome"]:
@@ -1014,12 +1014,22 @@ def reset_window_size(self):
10141014
self.set_window_rect(x, y, width, height)
10151015
self.__add_light_pause()
10161016

1017+
def open_new_window(self, url=None, switch_to=True):
1018+
return self.open_new_tab(url=url, switch_to=switch_to)
1019+
10171020
def switch_to_window(self, window):
10181021
self.switch_to_tab(window)
10191022

10201023
def switch_to_newest_window(self):
10211024
self.switch_to_tab(-1)
10221025

1026+
def open_new_tab(self, url=None, switch_to=True):
1027+
if not isinstance(url, str):
1028+
url = "about:blank"
1029+
self.loop.run_until_complete(self.page.get(url, new_tab=True))
1030+
if switch_to:
1031+
self.switch_to_newest_tab()
1032+
10231033
def switch_to_tab(self, tab):
10241034
driver = self.driver
10251035
if hasattr(driver, "cdp_base"):

seleniumbase/fixtures/base_case.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -3896,6 +3896,9 @@ def set_content_to_parent_frame(self):
38963896

38973897
def open_new_window(self, switch_to=True):
38983898
"""Opens a new browser tab/window and switches to it by default."""
3899+
if self.__is_cdp_swap_needed():
3900+
self.cdp.open_new_tab(switch_to=switch_to)
3901+
return
38993902
self.wait_for_ready_state_complete()
39003903
if switch_to:
39013904
try:
@@ -10339,7 +10342,7 @@ def wait_for_text_not_visible(
1033910342
timeout = self.__get_new_timeout(timeout)
1034010343
selector, by = self.__recalculate_selector(selector, by)
1034110344
if self.__is_cdp_swap_needed():
10342-
return self.cdp.wait_for_text(
10345+
return self.cdp.wait_for_text_not_visible(
1034310346
text, selector=selector, timeout=timeout
1034410347
)
1034510348
return page_actions.wait_for_text_not_visible(

seleniumbase/undetected/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,7 @@ def disconnect(self):
477477
with suppress(Exception):
478478
if self.service.is_connectable():
479479
self.stop_client()
480+
time.sleep(0.003)
480481
self.service.stop()
481482
self._is_connected = False
482483

seleniumbase/undetected/cdp_driver/browser.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -792,7 +792,7 @@ async def clear(self):
792792
connection = self._browser.connection
793793
cookies = await connection.send(cdp.network.get_cookies())
794794
if cookies:
795-
await connection.send(cdp.network.clear_cookies())
795+
await connection.send(cdp.storage.clear_cookies())
796796

797797

798798
class HTTPApi:

0 commit comments

Comments
 (0)