|
9 | 9 | import selenium.webdriver.chrome.webdriver |
10 | 10 | import selenium.webdriver.common.service |
11 | 11 | import selenium.webdriver.remote.command |
| 12 | +from .cdp import CDP |
| 13 | +from .cdp import PageElement |
12 | 14 | from .dprocess import start_detached |
13 | 15 | from .options import ChromeOptions |
14 | 16 | from .patcher import IS_POSIX |
@@ -133,13 +135,12 @@ def __init__( |
133 | 135 | constants.MultiBrowser.DRIVER_FIXING_LOCK |
134 | 136 | ) |
135 | 137 | with uc_lock: |
136 | | - patcher = Patcher( |
| 138 | + self.patcher = Patcher( |
137 | 139 | executable_path=driver_executable_path, |
138 | 140 | force=patcher_force_close, |
139 | 141 | version_main=version_main, |
140 | 142 | ) |
141 | | - patcher.auto() |
142 | | - self.patcher = patcher |
| 143 | + self.patcher.auto() |
143 | 144 | if not options: |
144 | 145 | options = ChromeOptions() |
145 | 146 | try: |
@@ -280,7 +281,7 @@ def __init__( |
280 | 281 | service_ = None |
281 | 282 | if patch_driver: |
282 | 283 | service_ = selenium.webdriver.chrome.service.Service( |
283 | | - executable_path=patcher.executable_path, |
| 284 | + executable_path=self.patcher.executable_path, |
284 | 285 | log_path=os.devnull, |
285 | 286 | ) |
286 | 287 | else: |
@@ -380,19 +381,28 @@ def clear_cdp_listeners(self): |
380 | 381 | if self.reactor and isinstance(self.reactor, Reactor): |
381 | 382 | self.reactor.handlers.clear() |
382 | 383 |
|
383 | | - def window_new(self): |
| 384 | + def window_new(self, url=None): |
384 | 385 | self.execute( |
385 | 386 | selenium.webdriver.remote.command.Command.NEW_WINDOW, |
386 | 387 | {"type": "window"}, |
387 | 388 | ) |
| 389 | + if url: |
| 390 | + self.remove_cdc_props_as_needed() |
| 391 | + return super().get(url) |
| 392 | + return None |
388 | 393 |
|
389 | 394 | def tab_new(self, url): |
390 | 395 | """This opens a url in a new tab.""" |
391 | 396 | if not hasattr(self, "cdp"): |
392 | | - from .cdp import CDP |
| 397 | + self.cdp = CDP(self.options) |
| 398 | + self.cdp.tab_new(str(url)) |
393 | 399 |
|
394 | | - cdp = CDP(self.options) |
395 | | - cdp.tab_new(str(url)) |
| 400 | + def tab_list(self): |
| 401 | + if not hasattr(self, "cdp"): |
| 402 | + self.cdp = CDP(self.options) |
| 403 | + |
| 404 | + retval = self.get(self.cdp.endpoints["list"]) |
| 405 | + return [PageElement(o) for o in retval] |
396 | 406 |
|
397 | 407 | def reconnect(self, timeout=0.1): |
398 | 408 | try: |
|
0 commit comments