MCPcopy Create free account
hub / github.com/seleniumbase/SeleniumBase / open_new_tab

Method open_new_tab

seleniumbase/core/sb_cdp.py:1309–1378  ·  view source on GitHub ↗
(self, url=None, switch_to=True, **kwargs)

Source from the content-addressed store, hash-verified

1307 self.switch_to_tab(-1)
1308
1309 def open_new_tab(self, url=None, switch_to=True, **kwargs):
1310 driver = self.driver
1311 if not isinstance(url, str):
1312 url = "about:blank"
1313 if hasattr(driver, "cdp_base"):
1314 try:
1315 self.loop.run_until_complete(
1316 self.page.get(url, new_tab=True, **kwargs)
1317 )
1318 except Exception:
1319 original_targets = self.loop.run_until_complete(
1320 self.page.send(mycdp.target.get_targets())
1321 )
1322 tab_url = driver.cdp_base.tabs[0].websocket_url
1323 if not self.driver.is_connected():
1324 self.driver.connect()
1325 self.driver.open_new_tab()
1326 targets = self.loop.run_until_complete(
1327 self.page.send(mycdp.target.get_targets())
1328 )
1329 new_targets = []
1330 for target in targets:
1331 if target not in original_targets:
1332 new_targets.append(target)
1333 if new_targets:
1334 found_target = new_targets[0]
1335 t_str = str(new_targets[0])
1336 target_id = (
1337 t_str.split("target_id=TargetID('")[-1].split("')")[0]
1338 )
1339 pre_tab_url = tab_url.split("/page/")[0] + "/page/"
1340 new_tab_url = pre_tab_url + target_id
1341 new_tab = cdp_tab.Tab(
1342 new_tab_url, found_target, driver.cdp_base
1343 )
1344 driver.cdp_base.targets.append(new_tab)
1345 driver.cdp_base.tabs.append(new_tab)
1346 self.driver.disconnect()
1347 self.switch_to_newest_tab()
1348 self.goto(url)
1349 return
1350 elif getattr(sb_config, "guest_mode", None):
1351 print(" open_new_tab() failed! (Known Guest Mode issue)")
1352 if switch_to:
1353 self.switch_to_newest_tab()
1354 return
1355
1356 target_id = self.loop.run_until_complete(
1357 self.page.send(mycdp.target.create_target(url))
1358 )
1359 if not target_id and getattr(sb_config, "guest_mode", None):
1360 print(" open_new_tab() failed! (Known Guest Mode issue)")
1361 found_target = None
1362 targets = self.loop.run_until_complete(
1363 self.page.send(mycdp.target.get_targets())
1364 )
1365 if target_id:
1366 for target in targets:

Callers 4

open_new_windowMethod · 0.95
raw_cdp_tabs.pyFile · 0.45

Calls 7

switch_to_newest_tabMethod · 0.95
gotoMethod · 0.95
connectMethod · 0.80
disconnectMethod · 0.80
getMethod · 0.45
sendMethod · 0.45
is_connectedMethod · 0.45

Tested by

no test coverage detected