mirror of
https://gitee.com/g1879/DrissionPage.git
synced 2024-12-10 04:00:23 +08:00
close_current_tab()改为close_tab(),待测试
This commit is contained in:
parent
3af48126ea
commit
2ddbaca3f9
@ -286,44 +286,37 @@ class DriverPage(BasePage):
|
|||||||
self.driver.switch_to.new_window('tab')
|
self.driver.switch_to.new_window('tab')
|
||||||
if url:
|
if url:
|
||||||
self.get(url)
|
self.get(url)
|
||||||
|
|
||||||
except Exception:
|
except Exception:
|
||||||
self.to_tab(-1)
|
self.to_tab(-1)
|
||||||
self.run_script(f'window.open("{url}");')
|
self.run_script(f'window.open("{url}");')
|
||||||
self.to_tab(-1)
|
self.to_tab(-1)
|
||||||
|
|
||||||
def close_current_tab(self) -> None:
|
|
||||||
"""关闭当前标签页"""
|
|
||||||
self.driver.close()
|
|
||||||
|
|
||||||
if self.tabs_count:
|
|
||||||
self.to_tab(0)
|
|
||||||
|
|
||||||
def close_other_tabs(self, num_or_handles: Union[int, str, list, tuple] = None) -> None:
|
def close_other_tabs(self, num_or_handles: Union[int, str, list, tuple] = None) -> None:
|
||||||
"""关闭传入的标签页以外标签页,默认保留当前页。可传入列表或元组 \n
|
"""关闭传入的标签页以外标签页,默认保留当前页。可传入列表或元组 \n
|
||||||
:param num_or_handles: 要保留的标签页序号或handle,可传入handle组成的列表或元组
|
:param num_or_handles: 要保留的标签页序号或handle,可传入handle和序号组成的列表或元组,为None时保存当前页
|
||||||
:return: None
|
:return: None
|
||||||
"""
|
"""
|
||||||
if num_or_handles is None:
|
all_tabs = self.driver.window_handles
|
||||||
reserve_tabs = (self.current_tab_handle,)
|
reserve_tabs = (self.current_tab_handle,) if num_or_handles is None else _get_handles(all_tabs, num_or_handles)
|
||||||
elif isinstance(num_or_handles, (int, str)):
|
|
||||||
reserve_tabs = (num_or_handles,)
|
|
||||||
elif isinstance(num_or_handles, (list, tuple)):
|
|
||||||
reserve_tabs = num_or_handles
|
|
||||||
else:
|
|
||||||
raise TypeError('num_or_handle参数只能是int、str、list 或 tuple类型。')
|
|
||||||
|
|
||||||
tabs = self.driver.window_handles
|
for i in set(all_tabs) - reserve_tabs:
|
||||||
reserve_tabs = set(i if isinstance(i, str) else tabs[i] for i in reserve_tabs)
|
|
||||||
|
|
||||||
for i in tabs: # 遍历所有标签页,关闭非保留的
|
|
||||||
if i not in reserve_tabs:
|
|
||||||
self.driver.switch_to.window(i)
|
self.driver.switch_to.window(i)
|
||||||
self.driver.close()
|
self.driver.close()
|
||||||
|
|
||||||
self.to_tab(0)
|
self.to_tab(0)
|
||||||
|
|
||||||
def close_tab(self, num_or_handles: Union[int, str, list, tuple] = None):
|
def close_tab(self, num_or_handles: Union[int, str, list, tuple] = None) -> None:
|
||||||
pass
|
"""关闭传入的标签页,默认关闭当前页。可传入列表或元组 \n
|
||||||
|
:param num_or_handles:要关闭的标签页序号或handle,可传入handle和序号组成的列表或元组,为None时关闭当前页
|
||||||
|
:return: None
|
||||||
|
"""
|
||||||
|
tabs = (self.current_tab_handle,) if num_or_handles is None else _get_handles(self.tab_handles, num_or_handles)
|
||||||
|
for i in tabs:
|
||||||
|
self.driver.switch_to.window(i)
|
||||||
|
self.driver.close()
|
||||||
|
|
||||||
|
self.to_tab(0)
|
||||||
|
|
||||||
def to_tab(self, num_or_handle: Union[int, str] = 0) -> None:
|
def to_tab(self, num_or_handle: Union[int, str] = 0) -> None:
|
||||||
"""跳转到标签页 \n
|
"""跳转到标签页 \n
|
||||||
@ -524,15 +517,15 @@ class DriverPage(BasePage):
|
|||||||
return text
|
return text
|
||||||
|
|
||||||
|
|
||||||
def _get_handles(page: DriverPage, num_or_handles: Union[int, str, list, tuple] = None):
|
def _get_handles(handles: list, num_or_handles: Union[int, str, list, tuple]) -> set:
|
||||||
if num_or_handles is None:
|
"""返回指定标签页组成的set
|
||||||
reserve_tabs = (page.current_tab_handle,)
|
:param handles: handles列表
|
||||||
elif isinstance(num_or_handles, (int, str)):
|
:param num_or_handles: 指定的标签页,可以是多个
|
||||||
reserve_tabs = (num_or_handles,)
|
:return: 指定标签页组成的set
|
||||||
elif isinstance(num_or_handles, (list, tuple)):
|
"""
|
||||||
reserve_tabs = num_or_handles
|
if isinstance(num_or_handles, (int, str)):
|
||||||
else:
|
num_or_handles = (num_or_handles,)
|
||||||
|
elif not isinstance(num_or_handles, (list, tuple)):
|
||||||
raise TypeError('num_or_handle参数只能是int、str、list 或 tuple类型。')
|
raise TypeError('num_or_handle参数只能是int、str、list 或 tuple类型。')
|
||||||
|
|
||||||
tabs = page.driver.window_handles
|
return set(i if isinstance(i, str) else handles[i] for i in num_or_handles)
|
||||||
return set(i if isinstance(i, str) else tabs[i] for i in reserve_tabs)
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user