Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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

Lines changed: 2 additions & 0 deletions
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()

‎examples/cdp_mode/raw_tab_switching.py

Lines changed: 15 additions & 0 deletions
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 2 additions & 0 deletions
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

Lines changed: 11 additions & 1 deletion
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

Lines changed: 4 additions & 1 deletion
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

Lines changed: 1 addition & 0 deletions
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

Lines changed: 1 addition & 1 deletion
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)

AltStyle によって変換されたページ (->オリジナル) /