You've already forked Douyin_Web_Live
58 lines
1.6 KiB
Python
58 lines
1.6 KiB
Python
import contextlib
|
|
import logging
|
|
from typing import TYPE_CHECKING
|
|
|
|
if TYPE_CHECKING:
|
|
from selenium.webdriver.remote.webdriver import WebDriver
|
|
from config import ConfigManager
|
|
|
|
_log = logging.getLogger("IDriver")
|
|
_log.setLevel(logging.DEBUG)
|
|
|
|
|
|
class IDriver():
|
|
browser: "WebDriver"
|
|
_config_manager: "ConfigManager"
|
|
|
|
def __init__(self, config_manager):
|
|
self._config_manager = config_manager
|
|
|
|
def terminate(self):
|
|
self.browser.quit()
|
|
|
|
def new_tab(self) -> str:
|
|
...
|
|
|
|
def change_tab(self, tab_handler: str):
|
|
...
|
|
|
|
def close_tab(self, tab_handler: str):
|
|
with self.op_tab(tab_handler):
|
|
self.browser.close()
|
|
|
|
def open_url(self, url: str, tab_handler: str = ""):
|
|
with self.op_tab(tab_handler):
|
|
self.browser.get(url)
|
|
|
|
@contextlib.contextmanager
|
|
def op_tab(self, tab_handler: str):
|
|
cur_handle = self.browser.current_window_handle
|
|
_log.debug("切换Tab:旧Tab:%s,新Tab:%s", cur_handle, tab_handler)
|
|
if tab_handler == "":
|
|
tab_handler = cur_handle
|
|
try:
|
|
self.change_tab(tab_handler)
|
|
_log.debug("切换至新Tab:%s", tab_handler)
|
|
yield self
|
|
finally:
|
|
self.change_tab(cur_handle)
|
|
_log.debug("切换至旧Tab:%s", cur_handle)
|
|
|
|
def refresh(self, tab_handler: str = ""):
|
|
with self.op_tab(tab_handler):
|
|
self.browser.refresh()
|
|
|
|
def screenshot(self, tab_handler: str = "") -> str:
|
|
with self.op_tab(tab_handler):
|
|
return self.browser.get_screenshot_as_base64()
|