4.1.0.12修复无法处理连续弹框问题;修复新建tab可能出现的问题;指定tldextract版本

This commit is contained in:
g1879 2024-11-13 16:13:57 +08:00
parent 7a5cc465db
commit d6402c26c8
6 changed files with 20 additions and 14 deletions

View File

@ -12,4 +12,4 @@ from ._pages.chromium_page import ChromiumPage
from ._pages.session_page import SessionPage
from ._pages.web_page import WebPage
__version__ = '4.1.0.11'
__version__ = '4.1.0.12'

View File

@ -294,7 +294,7 @@ class Chromium(object):
rmtree(path, True)
def _new_tab(self, mix=True, url=None, new_window=False, background=False, new_context=False):
obj = MixTab if mix else ChromiumTab
tab_type = MixTab if mix else ChromiumTab
tab = None
if new_context:
tab = self._run_cdp('Target.createBrowserContext')['browserContextId']
@ -308,12 +308,12 @@ class Chromium(object):
kwargs['browserContextId'] = tab
if self.states.is_incognito:
return _new_tab_by_js(self, url, obj, new_window)
return _new_tab_by_js(self, url, tab_type, new_window)
else:
try:
tab = self._run_cdp('Target.createTarget', **kwargs)['targetId']
except CDPError:
return _new_tab_by_js(self, url, obj, new_window)
return _new_tab_by_js(self, url, tab_type, new_window)
while self.states.is_alive:
if tab in self._drivers:
@ -321,7 +321,7 @@ class Chromium(object):
sleep(.1)
else:
raise BrowserConnectError('浏览器已关闭')
tab = obj(self, tab)
tab = tab_type(self, tab)
if url:
tab.get(url)
return tab
@ -484,8 +484,8 @@ def run_browser(chromium_options):
return is_headless, browser_id, is_exists
def _new_tab_by_js(browser: Chromium, url, obj, new_window):
mix = isinstance(obj, MixTab)
def _new_tab_by_js(browser: Chromium, url, tab_type, new_window):
mix = tab_type == MixTab
tab = browser._get_tab(mix=mix)
if url and not match(r'^.*?://.*', url):
raise ValueError(f'url也许需要加上http://')

View File

@ -673,11 +673,11 @@ class ChromiumBase(BasePage):
self._get_document()
def handle_alert(self, accept=True, send=None, timeout=None, next_one=False):
r = self._handle_alert(accept=accept, send=send, timeout=timeout, next_one=next_one)
if not isinstance(accept, bool):
return r
return self._handle_alert(accept=accept, send=send, timeout=timeout, next_one=next_one)
r = self._handle_alert(accept=accept, send=send, timeout=timeout, next_one=next_one)
while self._has_alert:
sleep(.1)
sleep(.0001)
return r
def _handle_alert(self, accept=True, send=None, timeout=None, next_one=False):

View File

@ -573,7 +573,10 @@ class ChromiumBase(BasePage):
"""
...
def handle_alert(self, accept: Optional[bool] = True, send: str = None, timeout: float = None,
def handle_alert(self,
accept: Optional[bool] = True,
send: str = None,
timeout: float = None,
next_one: bool = False) -> Union[str, False]:
"""处理提示框,可以自动等待提示框出现
:param accept: True表示确认False表示取消为None不会按按钮但依然返回文本值
@ -584,7 +587,10 @@ class ChromiumBase(BasePage):
"""
...
def _handle_alert(self, accept: bool = True, send: str = None, timeout: float = None,
def _handle_alert(self,
accept: Optional[bool] = True,
send: str = None,
timeout: float = None,
next_one: bool = False) -> Union[str, False]:
"""处理提示框,可以自动等待提示框出现
:param accept: True表示确认False表示取消其它值不会按按钮但依然返回文本值

View File

@ -4,5 +4,5 @@ cssselect
DownloadKit>=2.0.5
websocket-client
click
tldextract
tldextract>=3.4.4
psutil

View File

@ -26,7 +26,7 @@ setup(
'DownloadKit>=2.0.5',
'websocket-client',
'click',
'tldextract',
'tldextract>=3.4.4',
'psutil'
],
classifiers=[