From 0a5315b93aea36cca50cf5eb7328d213a880915f Mon Sep 17 00:00:00 2001 From: g1879 Date: Fri, 4 Dec 2020 17:14:55 +0800 Subject: [PATCH] =?UTF-8?q?close=5Fother=5Ftabs()=E7=8E=B0=E5=9C=A8?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E4=BF=9D=E7=95=99=E5=A4=9A=E4=B8=AAtab?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DrissionPage/driver_page.py | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/DrissionPage/driver_page.py b/DrissionPage/driver_page.py index f338672..9ea3ad5 100644 --- a/DrissionPage/driver_page.py +++ b/DrissionPage/driver_page.py @@ -115,7 +115,7 @@ class DriverPage(object): def ele(self, loc_or_ele: Union[Tuple[str, str], str, DriverElement, WebElement], mode: str = None, - timeout: float = None) -> Union[DriverElement, List[DriverElement or str], str, None]: + timeout: float = None) -> Union[DriverElement, List[DriverElement], str, None]: """返回页面中符合条件的元素,默认返回第一个 \n 示例: \n - 接收到元素对象时: \n @@ -176,7 +176,7 @@ class DriverPage(object): def eles(self, loc_or_str: Union[Tuple[str, str], str], - timeout: float = None) -> List[DriverElement or str]: + timeout: float = None) -> List[DriverElement]: """返回页面中所有符合条件的元素 \n 示例: \n - 用loc元组查找: \n @@ -335,33 +335,35 @@ class DriverPage(object): if self.tabs_count: self.to_tab(0) - def close_other_tabs(self, num_or_handle: Union[int, str] = None) -> None: - """关闭传入的标签页以外标签页,默认保留当前页 \n - :param num_or_handle: 要保留的标签页序号或handle,序号第一个为0,最后为-1 + def close_other_tabs(self, num_or_handles: Union[int, str, list, tuple] = None) -> None: + """关闭传入的标签页以外标签页,默认保留当前页。可传入列表或元组 \n + :param num_or_handles: 要保留的标签页序号或handle,可传入handle组成的列表或元组 :return: None """ try: - tab = int(num_or_handle) + tab = int(num_or_handles) except (ValueError, TypeError): - tab = num_or_handle + tab = num_or_handles tabs = self.driver.window_handles if tab is None: - page_handle = self.current_tab_handle + page_handle = (self.current_tab_handle,) elif isinstance(tab, int): - page_handle = tabs[tab] + page_handle = (tabs[tab],) elif isinstance(tab, str): + page_handle = (tab,) + elif isinstance(tab, (list, tuple)): page_handle = tab else: - raise TypeError('Argument num_or_handle can only be int or str.') + raise TypeError('Argument num_or_handle can only be int, str, list or tuple.') for i in tabs: # 遍历所有标签页,关闭非保留的 - if i != page_handle: + if i not in page_handle: self.driver.switch_to.window(i) self.driver.close() - self.driver.switch_to.window(page_handle) # 把权柄定位回保留的页面 + self.driver.switch_to.window(page_handle[0]) # 把权柄定位回保留的页面 def to_tab(self, num_or_handle: Union[int, str] = 0) -> None: """跳转到标签页 \n