通用方法不下放,提取部分方法
This commit is contained in:
parent
134cf0186a
commit
d0e067ae44
@ -27,10 +27,12 @@ class IDriver():
|
|||||||
...
|
...
|
||||||
|
|
||||||
def close_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 = ""):
|
def open_url(self, url: str, tab_handler: str = ""):
|
||||||
...
|
with self.op_tab(tab_handler):
|
||||||
|
self.browser.get(url)
|
||||||
|
|
||||||
@contextlib.contextmanager
|
@contextlib.contextmanager
|
||||||
def op_tab(self, tab_handler: str):
|
def op_tab(self, tab_handler: str):
|
||||||
@ -47,7 +49,9 @@ class IDriver():
|
|||||||
_log.debug("切换至旧Tab:%s", cur_handle)
|
_log.debug("切换至旧Tab:%s", cur_handle)
|
||||||
|
|
||||||
def refresh(self, tab_handler: str = ""):
|
def refresh(self, tab_handler: str = ""):
|
||||||
...
|
with self.op_tab(tab_handler):
|
||||||
|
self.browser.refresh()
|
||||||
|
|
||||||
def screenshot(self, tab_handler: str = "") -> str:
|
def screenshot(self, tab_handler: str = "") -> str:
|
||||||
...
|
with self.op_tab(tab_handler):
|
||||||
|
return self.browser.get_screenshot_as_base64()
|
||||||
|
@ -52,19 +52,3 @@ class ChromeDriver(IDriver):
|
|||||||
if tab_handler not in self.browser.window_handles:
|
if tab_handler not in self.browser.window_handles:
|
||||||
return
|
return
|
||||||
self.browser.switch_to.window(tab_handler)
|
self.browser.switch_to.window(tab_handler)
|
||||||
|
|
||||||
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)
|
|
||||||
|
|
||||||
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()
|
|
||||||
|
@ -5,7 +5,7 @@ from browser.chrome import ChromeDriver
|
|||||||
from common import Singleton
|
from common import Singleton
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from typing import Type, List
|
from typing import Type, List, Optional
|
||||||
from browser.IDriver import IDriver
|
from browser.IDriver import IDriver
|
||||||
from config import ConfigManager
|
from config import ConfigManager
|
||||||
from common.items import TabInfo
|
from common.items import TabInfo
|
||||||
@ -29,6 +29,14 @@ class BrowserManager(metaclass=Singleton):
|
|||||||
self._tabs: "List[TabInfo]" = []
|
self._tabs: "List[TabInfo]" = []
|
||||||
_log.debug("初始化完毕")
|
_log.debug("初始化完毕")
|
||||||
|
|
||||||
|
def _check_tab_valid(self, tab_info: "TabInfo") -> "bool":
|
||||||
|
if tab_info not in self._tabs:
|
||||||
|
for _tab in self._tabs:
|
||||||
|
if _tab.tab_handler == tab_info.tab_handler:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def driver(self):
|
def driver(self):
|
||||||
return self._driver
|
return self._driver
|
||||||
@ -46,7 +54,7 @@ class BrowserManager(metaclass=Singleton):
|
|||||||
self._tabs.append(tab_info)
|
self._tabs.append(tab_info)
|
||||||
|
|
||||||
def close_tab(self, tab_info: "TabInfo"):
|
def close_tab(self, tab_info: "TabInfo"):
|
||||||
if tab_info not in self._tabs:
|
if self._check_tab_valid(tab_info):
|
||||||
_log.warning("提供的标签不在标签组中,不予执行")
|
_log.warning("提供的标签不在标签组中,不予执行")
|
||||||
return
|
return
|
||||||
_log.debug("关闭标签:%s", tab_info.tab_handler)
|
_log.debug("关闭标签:%s", tab_info.tab_handler)
|
||||||
@ -54,6 +62,27 @@ class BrowserManager(metaclass=Singleton):
|
|||||||
_log.info("关闭标签完毕:%s", tab_info.tab_handler)
|
_log.info("关闭标签完毕:%s", tab_info.tab_handler)
|
||||||
self._tabs.remove(tab_info)
|
self._tabs.remove(tab_info)
|
||||||
|
|
||||||
|
def refresh_tab(self, tab_info: "TabInfo"):
|
||||||
|
if self._check_tab_valid(tab_info):
|
||||||
|
_log.warning("提供的标签不在标签组中,不予执行")
|
||||||
|
return
|
||||||
|
_log.debug("刷新标签:%s", tab_info.tab_handler)
|
||||||
|
self._driver.refresh(tab_info.tab_handler)
|
||||||
|
|
||||||
def terminate(self):
|
def terminate(self):
|
||||||
if self._driver:
|
if self._driver:
|
||||||
self._driver.terminate()
|
self._driver.terminate()
|
||||||
|
|
||||||
|
def find_tab_handler_by_url(self, url: str) -> "Optional[str]":
|
||||||
|
for tab_info in self._tabs:
|
||||||
|
if url == tab_info.url:
|
||||||
|
return tab_info.tab_handler
|
||||||
|
|
||||||
|
def create_or_refresh(self, tab_info: "TabInfo") -> "str":
|
||||||
|
handler = self.find_tab_handler_by_url(tab_info.url)
|
||||||
|
if handler is not None:
|
||||||
|
tab_info.tab_handler = handler
|
||||||
|
self.refresh_tab(tab_info)
|
||||||
|
else:
|
||||||
|
self.open_tab(tab_info)
|
||||||
|
return tab_info.tab_handler
|
Reference in New Issue
Block a user