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
|
nodeIds = None
|
||||||
end_time = perf_counter() + timeout
|
end_time = perf_counter() + timeout
|
||||||
|
ok = False
|
||||||
while True:
|
while True:
|
||||||
if count > 0:
|
if count > 0:
|
||||||
count = 1 if single else count
|
count = 1 if single else count
|
||||||
try:
|
try:
|
||||||
nodeIds = self._wait_driver.DOM.getSearchResults(searchId=search_result['searchId'],
|
nodeIds = self._wait_driver.DOM.getSearchResults(searchId=search_result['searchId'],
|
||||||
fromIndex=0, toIndex=count)
|
fromIndex=0, toIndex=count)
|
||||||
break
|
if nodeIds['nodeIds'][0] != 0:
|
||||||
|
ok = True
|
||||||
|
|
||||||
except Exception:
|
except Exception:
|
||||||
sleep(.01)
|
sleep(.01)
|
||||||
|
|
||||||
if perf_counter() >= end_time:
|
if ok or perf_counter() >= end_time:
|
||||||
break
|
break
|
||||||
|
|
||||||
search_result = self._wait_driver.DOM.performSearch(query=loc, includeUserAgentShadowDOM=True)
|
search_result = self._wait_driver.DOM.performSearch(query=loc, includeUserAgentShadowDOM=True)
|
||||||
|
@ -126,6 +126,11 @@ class ChromiumPage(ChromiumBase):
|
|||||||
def main_tab(self):
|
def main_tab(self):
|
||||||
return self._main_tab
|
return self._main_tab
|
||||||
|
|
||||||
|
@property
|
||||||
|
def latest_tab(self):
|
||||||
|
"""返回最新的标签页id,最新标签页指最后创建或最后被激活的"""
|
||||||
|
return self.tabs[0]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def process_id(self):
|
def process_id(self):
|
||||||
"""返回浏览器进程id"""
|
"""返回浏览器进程id"""
|
||||||
@ -261,10 +266,6 @@ class ChromiumPage(ChromiumBase):
|
|||||||
"""跳转到主标签页"""
|
"""跳转到主标签页"""
|
||||||
self.to_tab(self._main_tab)
|
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):
|
def to_tab(self, tab_id=None, activate=True):
|
||||||
"""跳转到标签页
|
"""跳转到标签页
|
||||||
:param tab_id: 标签页id字符串,默认跳转到main_tab
|
:param tab_id: 标签页id字符串,默认跳转到main_tab
|
||||||
|
@ -56,6 +56,9 @@ class ChromiumPage(ChromiumBase):
|
|||||||
@property
|
@property
|
||||||
def main_tab(self) -> str: ...
|
def main_tab(self) -> str: ...
|
||||||
|
|
||||||
|
@property
|
||||||
|
def latest_tab(self) -> str: ...
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def process_id(self) -> Union[None, int]: ...
|
def process_id(self) -> Union[None, int]: ...
|
||||||
|
|
||||||
@ -87,8 +90,6 @@ class ChromiumPage(ChromiumBase):
|
|||||||
|
|
||||||
def to_main_tab(self) -> None: ...
|
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) -> None: ...
|
||||||
|
|
||||||
def _to_tab(self, tab_id: str = None, activate: bool = True, read_doc: 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):
|
class WebPage(SessionPage, ChromiumPage, BasePage):
|
||||||
"""整合浏览器和request的页面类"""
|
"""整合浏览器和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 mode: 'd' 或 's',即driver模式和session模式
|
||||||
:param tab_id: 要控制的标签页id,不指定默认为激活的
|
|
||||||
:param timeout: 超时时间,d模式时为寻找元素时间,s模式时为连接时间,默认10秒
|
:param timeout: 超时时间,d模式时为寻找元素时间,s模式时为连接时间,默认10秒
|
||||||
:param driver_or_options: ChromiumDriver对象或DriverOptions对象,只使用s模式时应传入False
|
:param driver_or_options: ChromiumDriver对象或DriverOptions对象,只使用s模式时应传入False
|
||||||
:param session_or_options: Session对象或SessionOptions对象,只使用d模式时应传入False
|
:param session_or_options: Session对象或SessionOptions对象,只使用d模式时应传入False
|
||||||
@ -45,7 +44,6 @@ class WebPage(SessionPage, ChromiumPage, BasePage):
|
|||||||
self._tab_obj = None
|
self._tab_obj = None
|
||||||
self._driver_options = None
|
self._driver_options = None
|
||||||
self._session_options = None
|
self._session_options = None
|
||||||
self._setting_tab_id = tab_id
|
|
||||||
self._response = None
|
self._response = None
|
||||||
self._download_set = None
|
self._download_set = None
|
||||||
|
|
||||||
@ -199,7 +197,7 @@ class WebPage(SessionPage, ChromiumPage, BasePage):
|
|||||||
"""返回纯粹的ChromiumDriver对象,调用时切换到d模式,并连接浏览器"""
|
"""返回纯粹的ChromiumDriver对象,调用时切换到d模式,并连接浏览器"""
|
||||||
self.change_mode('d')
|
self.change_mode('d')
|
||||||
if self._tab_obj is None:
|
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
|
return self._tab_obj
|
||||||
|
|
||||||
@_driver.setter
|
@_driver.setter
|
||||||
@ -329,7 +327,7 @@ class WebPage(SessionPage, ChromiumPage, BasePage):
|
|||||||
# s模式转d模式
|
# s模式转d模式
|
||||||
if self._mode == 'd':
|
if self._mode == 'd':
|
||||||
if self._tab_obj is None:
|
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._url = None if not self._has_driver else super(SessionPage, self).url
|
||||||
self._has_driver = True
|
self._has_driver = True
|
||||||
|
@ -25,7 +25,6 @@ class WebPage(SessionPage, ChromiumPage, BasePage):
|
|||||||
def __init__(self,
|
def __init__(self,
|
||||||
mode: str = 'd',
|
mode: str = 'd',
|
||||||
timeout: float = None,
|
timeout: float = None,
|
||||||
tab_id: str = None,
|
|
||||||
driver_or_options: Union[ChromiumDriver, ChromiumOptions, DriverOptions, bool] = None,
|
driver_or_options: Union[ChromiumDriver, ChromiumOptions, DriverOptions, bool] = None,
|
||||||
session_or_options: Union[Session, SessionOptions, bool] = None) -> None:
|
session_or_options: Union[Session, SessionOptions, bool] = None) -> None:
|
||||||
self._mode: str = ...
|
self._mode: str = ...
|
||||||
@ -34,7 +33,6 @@ class WebPage(SessionPage, ChromiumPage, BasePage):
|
|||||||
self.address: str = ...
|
self.address: str = ...
|
||||||
self._session_options: Union[SessionOptions, None] = ...
|
self._session_options: Union[SessionOptions, None] = ...
|
||||||
self._driver_options: Union[ChromiumOptions, DriverOptions, None] = ...
|
self._driver_options: Union[ChromiumOptions, DriverOptions, None] = ...
|
||||||
self._setting_tab_id: str = ...
|
|
||||||
self._download_set: WebPageDownloadSetter = ...
|
self._download_set: WebPageDownloadSetter = ...
|
||||||
self._download_path: str = ...
|
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(
|
setup(
|
||||||
name="DrissionPage",
|
name="DrissionPage",
|
||||||
version="3.1.1",
|
version="3.1.2",
|
||||||
author="g1879",
|
author="g1879",
|
||||||
author_email="g1879@qq.com",
|
author_email="g1879@qq.com",
|
||||||
description="A module that integrates selenium and requests session, encapsulates common page operations.",
|
description="A module that integrates selenium and requests session, encapsulates common page operations.",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user