mirror of
https://gitee.com/g1879/DrissionPage.git
synced 2024-12-10 04:00:23 +08:00
优化tab操作,增加功能
tab数量改为属性,增加当前handle和所有handle属性,to_tab()和close_other_tabs()可接收handle
This commit is contained in:
parent
ba2223e691
commit
9d28932f45
@ -220,21 +220,31 @@ class DriverPage(object):
|
|||||||
"""
|
"""
|
||||||
return self.driver.execute_script(script)
|
return self.driver.execute_script(script)
|
||||||
|
|
||||||
def get_tabs_sum(self) -> int:
|
@property
|
||||||
|
def tabs_conut(self) -> int:
|
||||||
"""返回标签页数量"""
|
"""返回标签页数量"""
|
||||||
try:
|
try:
|
||||||
return len(self.driver.window_handles)
|
return len(self.driver.window_handles)
|
||||||
except:
|
except:
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
def get_tab_num(self) -> int:
|
@property
|
||||||
|
def tab_handles(self) -> list:
|
||||||
|
"""返回所有标签页handle列表"""
|
||||||
|
return self.driver.window_handles
|
||||||
|
|
||||||
|
@property
|
||||||
|
def current_tab_num(self) -> int:
|
||||||
"""返回当前标签页序号"""
|
"""返回当前标签页序号"""
|
||||||
handle = self.driver.current_window_handle
|
return self.driver.window_handles.index(self.driver.current_window_handle)
|
||||||
handle_list = self.driver.window_handles
|
|
||||||
return handle_list.index(handle)
|
@property
|
||||||
|
def current_tab_handle(safe) -> str:
|
||||||
|
"""返回当前标签页handle"""
|
||||||
|
return self.driver.current_window_handle
|
||||||
|
|
||||||
def create_tab(self, url: str = '') -> None:
|
def create_tab(self, url: str = '') -> None:
|
||||||
"""新建并定位到一个标签页,该标签页在最后面
|
"""新建并定位到一个标签页,该标签页在最后面 \n
|
||||||
:param url: 新标签页跳转到的网址
|
:param url: 新标签页跳转到的网址
|
||||||
:return: None
|
:return: None
|
||||||
"""
|
"""
|
||||||
@ -245,29 +255,37 @@ class DriverPage(object):
|
|||||||
def close_current_tab(self) -> None:
|
def close_current_tab(self) -> None:
|
||||||
"""关闭当前标签页"""
|
"""关闭当前标签页"""
|
||||||
self.driver.close()
|
self.driver.close()
|
||||||
if self.get_tabs_sum():
|
if self.tabs_conut:
|
||||||
self.to_tab(0)
|
self.to_tab(0)
|
||||||
|
|
||||||
def close_other_tabs(self, index: int = None) -> None:
|
def close_other_tabs(self, num_or_handle: Union[int, str, None] = None) -> None:
|
||||||
"""关闭序号以外标签页,没有传入序号代表保留当前页 \n
|
"""关闭传入的标签页以外标签页,默认保留当前页 \n
|
||||||
:param index: 要保留的标签页序号,第一个为0,最后为-1
|
:param num_or_handle: 要保留的标签页序号或handle,序号第一个为0,最后为-1
|
||||||
:return: None
|
:return: None
|
||||||
"""
|
"""
|
||||||
tabs = self.driver.window_handles # 获得所有标签页权柄
|
tabs = self.driver.window_handles # 获得所有标签页权柄
|
||||||
page_handle = tabs[index]
|
if num_or_handle is None:
|
||||||
|
page_handle = self.current_tab_handle
|
||||||
|
elif isinstance(num_or_handle, int):
|
||||||
|
page_handle = tabs[num_or_handle]
|
||||||
|
elif isinstance(num_or_handle, str):
|
||||||
|
page_handle = num_or_handle
|
||||||
|
else:
|
||||||
|
raise TypeError('Argument num_or_handle must be int or str.')
|
||||||
|
|
||||||
for i in tabs: # 遍历所有标签页,关闭非保留的
|
for i in tabs: # 遍历所有标签页,关闭非保留的
|
||||||
if i != page_handle:
|
if i != page_handle:
|
||||||
self.driver.switch_to.window(i)
|
self.driver.switch_to.window(i)
|
||||||
self.close_current_tab()
|
self.driver.close()
|
||||||
self.driver.switch_to.window(page_handle) # 把权柄定位回保留的页面
|
self.driver.switch_to.window(page_handle) # 把权柄定位回保留的页面
|
||||||
|
|
||||||
def to_tab(self, index: int = 0) -> None:
|
def to_tab(self, num_or_handle: Union[int, str] = 0) -> None:
|
||||||
"""跳转到第几个标签页 \n
|
"""跳转到标签页 \n
|
||||||
:param index: 标签页序号,第一个为0,最后为-1
|
:param num_or_handle: 标签页序号或handle字符串,序号第一个为0,最后为-1
|
||||||
:return: None
|
:return: None
|
||||||
"""
|
"""
|
||||||
tabs = self.driver.window_handles # 获得所有标签页权柄
|
tab = self.driver.window_handles[num_or_handle] if isinstance(num_or_handle, int) else num_or_handle
|
||||||
self.driver.switch_to.window(tabs[index])
|
self.driver.switch_to.window(tab)
|
||||||
|
|
||||||
def to_iframe(self, loc_or_ele: Union[int, str, tuple, WebElement, DriverElement] = 'main') -> None:
|
def to_iframe(self, loc_or_ele: Union[int, str, tuple, WebElement, DriverElement] = 'main') -> None:
|
||||||
"""跳转到iframe \n
|
"""跳转到iframe \n
|
||||||
|
Loading…
x
Reference in New Issue
Block a user