Skip to content

Commit 1f606f9

Browse files
committed
Fix issue with passing options to new tabs in CDP Mode
1 parent 622998f commit 1f606f9

File tree

4 files changed

+24
-17
lines changed

4 files changed

+24
-17
lines changed

seleniumbase/core/sb_cdp.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1182,13 +1182,15 @@ def switch_to_window(self, window):
11821182
def switch_to_newest_window(self):
11831183
self.switch_to_tab(-1)
11841184

1185-
def open_new_tab(self, url=None, switch_to=True):
1185+
def open_new_tab(self, url=None, switch_to=True, **kwargs):
11861186
driver = self.driver
11871187
if not isinstance(url, str):
11881188
url = "about:blank"
11891189
if hasattr(driver, "cdp_base"):
11901190
try:
1191-
self.loop.run_until_complete(self.page.get(url, new_tab=True))
1191+
self.loop.run_until_complete(
1192+
self.page.get(url, new_tab=True, **kwargs)
1193+
)
11921194
except Exception:
11931195
original_targets = self.loop.run_until_complete(
11941196
self.page.send(mycdp.target.get_targets())

seleniumbase/fixtures/base_case.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -221,11 +221,11 @@ def test_example(self):
221221
[sys.executable, "-m", "pytest", file, "-s", *all_args]
222222
)
223223

224-
def open(self, url):
224+
def open(self, url, **kwargs):
225225
"""Navigates the current browser window to the specified page."""
226226
self.__check_scope()
227227
if self.__is_cdp_swap_needed():
228-
self.cdp.open(url)
228+
self.cdp.open(url, **kwargs)
229229
return
230230
elif (
231231
getattr(self.driver, "_is_using_uc", None)
@@ -235,14 +235,14 @@ def open(self, url):
235235
# Auth in UC Mode requires CDP Mode
236236
# (and now we're always forcing it)
237237
logging.info("open() in UC Mode now always activates CDP Mode.")
238-
self.activate_cdp_mode(url)
238+
self.activate_cdp_mode(url, **kwargs)
239239
return
240240
elif (
241241
getattr(self.driver, "_is_using_uc", None)
242242
and getattr(self.driver, "_is_using_cdp", None)
243243
):
244244
self.disconnect()
245-
self.cdp.open(url)
245+
self.cdp.open(url, **kwargs)
246246
return
247247
self._check_browser()
248248
if self.__needs_minimum_wait():
@@ -3960,7 +3960,7 @@ def set_content_to_parent_frame(self):
39603960
Reverts self.set_content_to_frame()."""
39613961
self.set_content_to_default(nested=True)
39623962

3963-
def open_new_window(self, switch_to=True):
3963+
def open_new_window(self, switch_to=True, **kwargs):
39643964
"""Opens a new browser tab/window and switches to it by default."""
39653965
url = None
39663966
if self.__looks_like_a_page_url(str(switch_to)):
@@ -3969,14 +3969,14 @@ def open_new_window(self, switch_to=True):
39693969
url = switch_to
39703970
switch_to = True
39713971
if self.__is_cdp_swap_needed():
3972-
self.cdp.open_new_tab(url=url, switch_to=switch_to)
3972+
self.cdp.open_new_tab(url=url, switch_to=switch_to, **kwargs)
39733973
return
39743974
elif (
39753975
getattr(self.driver, "_is_using_uc", None)
39763976
and getattr(self.driver, "_is_using_cdp", None)
39773977
):
39783978
self.disconnect()
3979-
self.cdp.open_new_tab(url=url, switch_to=switch_to)
3979+
self.cdp.open_new_tab(url=url, switch_to=switch_to, **kwargs)
39803980
return
39813981
self.wait_for_ready_state_complete()
39823982
if switch_to:
@@ -9264,9 +9264,9 @@ def reload_page(self):
92649264
"""Same as self.refresh_page()"""
92659265
self.refresh_page()
92669266

9267-
def open_new_tab(self, switch_to=True):
9267+
def open_new_tab(self, switch_to=True, **kwargs):
92689268
"""Same as self.open_new_window()"""
9269-
self.open_new_window(switch_to=switch_to)
9269+
self.open_new_window(switch_to=switch_to, **kwargs)
92709270

92719271
def switch_to_tab(self, tab, timeout=None):
92729272
"""Same as self.switch_to_window()

seleniumbase/undetected/cdp_driver/browser.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -333,11 +333,16 @@ async def get(
333333
)
334334
connection.browser = self
335335
else:
336-
# First tab from browser.tabs
337-
connection: tab.Tab = next(
338-
filter(lambda item: item.type_ == "page", self.targets)
339-
)
340-
await connection.sleep(0.005)
336+
try:
337+
# Most recently opened tab
338+
connection = self.targets[-1]
339+
await connection.sleep(0.005)
340+
except Exception:
341+
# First tab from browser.tabs
342+
connection: tab.Tab = next(
343+
filter(lambda item: item.type_ == "page", self.targets)
344+
)
345+
await connection.sleep(0.005)
341346
_cdp_timezone = None
342347
_cdp_user_agent = ""
343348
_cdp_locale = None

seleniumbase/undetected/cdp_driver/tab.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,7 @@ async def get(
371371
return self
372372
else:
373373
return await self.browser.get(
374-
url, new_tab, new_window, **kwargs
374+
url, new_tab=False, new_window=False, **kwargs
375375
)
376376

377377
async def open(self, url="about:blank"):

0 commit comments

Comments
 (0)