(self, url=None, switch_to=True, **kwargs)
| 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: |
no test coverage detected