mirror of
https://gitee.com/g1879/DrissionPage.git
synced 2024-12-10 04:00:23 +08:00
3.1.2修复页面未加载完可能获取到空元素的问题;修复新标签页重定向时获取文档不正确问题;WebPage初始化删除tab_id参数;ChromiumPage添加latest_tab属性
This commit is contained in:
parent
78dc04c673
commit
f3155df7a9
@ -436,17 +436,20 @@ class ChromiumBase(BasePage):
|
||||
|
||||
nodeIds = None
|
||||
end_time = perf_counter() + timeout
|
||||
ok = False
|
||||
while True:
|
||||
if count > 0:
|
||||
count = 1 if single else count
|
||||
try:
|
||||
nodeIds = self._wait_driver.DOM.getSearchResults(searchId=search_result['searchId'],
|
||||
fromIndex=0, toIndex=count)
|
||||
break
|
||||
if nodeIds['nodeIds'][0] != 0:
|
||||
ok = True
|
||||
|
||||
except Exception:
|
||||
sleep(.01)
|
||||
|
||||
if perf_counter() >= end_time:
|
||||
if ok or perf_counter() >= end_time:
|
||||
break
|
||||
|
||||
search_result = self._wait_driver.DOM.performSearch(query=loc, includeUserAgentShadowDOM=True)
|
||||
|
@ -126,6 +126,11 @@ class ChromiumPage(ChromiumBase):
|
||||
def main_tab(self):
|
||||
return self._main_tab
|
||||
|
||||
@property
|
||||
def latest_tab(self):
|
||||
"""返回最新的标签页id,最新标签页指最后创建或最后被激活的"""
|
||||
return self.tabs[0]
|
||||
|
||||
@property
|
||||
def process_id(self):
|
||||
"""返回浏览器进程id"""
|
||||
@ -261,10 +266,6 @@ class ChromiumPage(ChromiumBase):
|
||||
"""跳转到主标签页"""
|
||||
self.to_tab(self._main_tab)
|
||||
|
||||
def to_new_tab(self):
|
||||
"""切换到最新的标签页"""
|
||||
self.to_tab(self.tabs[0])
|
||||
|
||||
def to_tab(self, tab_id=None, activate=True):
|
||||
"""跳转到标签页
|
||||
:param tab_id: 标签页id字符串,默认跳转到main_tab
|
||||
|
@ -56,6 +56,9 @@ class ChromiumPage(ChromiumBase):
|
||||
@property
|
||||
def main_tab(self) -> str: ...
|
||||
|
||||
@property
|
||||
def latest_tab(self) -> str: ...
|
||||
|
||||
@property
|
||||
def process_id(self) -> Union[None, int]: ...
|
||||
|
||||
@ -87,8 +90,6 @@ class ChromiumPage(ChromiumBase):
|
||||
|
||||
def to_main_tab(self) -> None: ...
|
||||
|
||||
def to_new_tab(self) -> None: ...
|
||||
|
||||
def to_tab(self, tab_id: str = None, activate: bool = True) -> None: ...
|
||||
|
||||
def _to_tab(self, tab_id: str = None, activate: bool = True, read_doc: bool = True) -> None: ...
|
||||
|
@ -24,10 +24,9 @@ from .session_page import SessionPage
|
||||
class WebPage(SessionPage, ChromiumPage, BasePage):
|
||||
"""整合浏览器和request的页面类"""
|
||||
|
||||
def __init__(self, mode='d', timeout=None, tab_id=None, driver_or_options=None, session_or_options=None):
|
||||
def __init__(self, mode='d', timeout=None, driver_or_options=None, session_or_options=None):
|
||||
"""初始化函数
|
||||
:param mode: 'd' 或 's',即driver模式和session模式
|
||||
:param tab_id: 要控制的标签页id,不指定默认为激活的
|
||||
:param timeout: 超时时间,d模式时为寻找元素时间,s模式时为连接时间,默认10秒
|
||||
:param driver_or_options: ChromiumDriver对象或DriverOptions对象,只使用s模式时应传入False
|
||||
:param session_or_options: Session对象或SessionOptions对象,只使用d模式时应传入False
|
||||
@ -45,7 +44,6 @@ class WebPage(SessionPage, ChromiumPage, BasePage):
|
||||
self._tab_obj = None
|
||||
self._driver_options = None
|
||||
self._session_options = None
|
||||
self._setting_tab_id = tab_id
|
||||
self._response = None
|
||||
self._download_set = None
|
||||
|
||||
@ -199,7 +197,7 @@ class WebPage(SessionPage, ChromiumPage, BasePage):
|
||||
"""返回纯粹的ChromiumDriver对象,调用时切换到d模式,并连接浏览器"""
|
||||
self.change_mode('d')
|
||||
if self._tab_obj is None:
|
||||
self._connect_browser(self._driver_options, self._setting_tab_id)
|
||||
self._connect_browser(self._driver_options)
|
||||
return self._tab_obj
|
||||
|
||||
@_driver.setter
|
||||
@ -329,7 +327,7 @@ class WebPage(SessionPage, ChromiumPage, BasePage):
|
||||
# s模式转d模式
|
||||
if self._mode == 'd':
|
||||
if self._tab_obj is None:
|
||||
self._connect_browser(self._driver_options, self._setting_tab_id)
|
||||
self._connect_browser(self._driver_options)
|
||||
|
||||
self._url = None if not self._has_driver else super(SessionPage, self).url
|
||||
self._has_driver = True
|
||||
|
@ -25,7 +25,6 @@ class WebPage(SessionPage, ChromiumPage, BasePage):
|
||||
def __init__(self,
|
||||
mode: str = 'd',
|
||||
timeout: float = None,
|
||||
tab_id: str = None,
|
||||
driver_or_options: Union[ChromiumDriver, ChromiumOptions, DriverOptions, bool] = None,
|
||||
session_or_options: Union[Session, SessionOptions, bool] = None) -> None:
|
||||
self._mode: str = ...
|
||||
@ -34,7 +33,6 @@ class WebPage(SessionPage, ChromiumPage, BasePage):
|
||||
self.address: str = ...
|
||||
self._session_options: Union[SessionOptions, None] = ...
|
||||
self._driver_options: Union[ChromiumOptions, DriverOptions, None] = ...
|
||||
self._setting_tab_id: str = ...
|
||||
self._download_set: WebPageDownloadSetter = ...
|
||||
self._download_path: str = ...
|
||||
|
||||
|
2
setup.py
2
setup.py
@ -6,7 +6,7 @@ with open("README.md", "r", encoding='utf-8') as fh:
|
||||
|
||||
setup(
|
||||
name="DrissionPage",
|
||||
version="3.1.1",
|
||||
version="3.1.2",
|
||||
author="g1879",
|
||||
author_email="g1879@qq.com",
|
||||
description="A module that integrates selenium and requests session, encapsulates common page operations.",
|
||||
|
Loading…
x
Reference in New Issue
Block a user