删除go_anyway参数;重试连接默认不显示

This commit is contained in:
g1879 2022-02-10 11:23:42 +08:00
parent ca23c6b0d7
commit 60fb789cd9
4 changed files with 27 additions and 36 deletions

View File

@ -346,7 +346,6 @@ class BasePage(BaseParser):
@abstractmethod @abstractmethod
def get(self, def get(self,
url: str, url: str,
go_anyway: bool = False,
show_errmsg: bool = False, show_errmsg: bool = False,
retry: int = None, retry: int = None,
interval: float = None): interval: float = None):

View File

@ -64,24 +64,22 @@ class DriverPage(BasePage):
def get(self, def get(self,
url: str, url: str,
go_anyway: bool = False,
show_errmsg: bool = False, show_errmsg: bool = False,
retry: int = None, retry: int = None,
interval: float = None) -> Union[None, bool]: interval: float = None) -> Union[None, bool]:
"""访问url \n """访问url \n
:param url: 目标url :param url: 目标url
:param go_anyway: 若目标url与当前url一致是否强制跳转
:param show_errmsg: 是否显示和抛出异常 :param show_errmsg: 是否显示和抛出异常
:param retry: 重试次数 :param retry: 重试次数
:param interval: 重试间隔 :param interval: 重试间隔
:return: 目标url是否可用 :return: 目标url是否可用返回None表示不确定
""" """
to_url = quote(url, safe='/:&?=%;#@+!') to_url = quote(url, safe='/:&?=%;#@+!')
retry = int(retry) if retry is not None else int(self.retry_times) retry = retry if retry is not None else self.retry_times
interval = int(interval) if interval is not None else int(self.retry_interval) interval = interval if interval is not None else self.retry_interval
if not url or (not go_anyway and self.url == to_url): if not url:
return raise ValueError('没有传入url。')
self._url = to_url self._url = to_url
self._url_available = self._try_to_connect(to_url, times=retry, interval=interval, show_errmsg=show_errmsg) self._url_available = self._try_to_connect(to_url, times=retry, interval=interval, show_errmsg=show_errmsg)
@ -178,13 +176,13 @@ class DriverPage(BasePage):
to_url: str, to_url: str,
times: int = 0, times: int = 0,
interval: float = 1, interval: float = 1,
show_errmsg: bool = False): show_errmsg: bool = False) -> Union[bool, None]:
"""尝试连接,重试若干次 \n """尝试连接,重试若干次 \n
:param to_url: 要访问的url :param to_url: 要访问的url
:param times: 重试次数 :param times: 重试次数
:param interval: 重试间隔 :param interval: 重试间隔
:param show_errmsg: 是否抛出异常 :param show_errmsg: 是否抛出异常
:return: 是否成功 :return: 是否成功返回None表示不确定
""" """
err = None err = None
is_ok = False is_ok = False
@ -204,6 +202,7 @@ class DriverPage(BasePage):
if _ < times: if _ < times:
sleep(interval) sleep(interval)
if show_errmsg:
print(f'重试 {to_url}') print(f'重试 {to_url}')
if is_ok is False and show_errmsg: if is_ok is False and show_errmsg:

View File

@ -113,24 +113,22 @@ class MixPage(SessionPage, DriverPage, BasePage):
def get(self, def get(self,
url: str, url: str,
go_anyway: bool = False,
show_errmsg: bool = False, show_errmsg: bool = False,
retry: int = None, retry: int = None,
interval: float = None, interval: float = None,
**kwargs) -> Union[bool, None]: **kwargs) -> Union[bool, None]:
"""跳转到一个url \n """跳转到一个url \n
:param url: 目标url :param url: 目标url
:param go_anyway: 若目标url与当前url一致是否强制跳转
:param show_errmsg: 是否显示和抛出异常 :param show_errmsg: 是否显示和抛出异常
:param retry: 重试次数 :param retry: 重试次数
:param interval: 重试间隔 :param interval: 重试间隔
:param kwargs: 连接参数s模式专用 :param kwargs: 连接参数s模式专用
:return: url是否可用 :return: url是否可用d模式返回None时表示不确定
""" """
if self._mode == 'd': if self._mode == 'd':
return super(SessionPage, self).get(url, go_anyway, show_errmsg, retry, interval) return super(SessionPage, self).get(url, show_errmsg, retry, interval)
elif self._mode == 's': elif self._mode == 's':
return super().get(url, go_anyway, show_errmsg, retry, interval, **kwargs) return super().get(url, show_errmsg, retry, interval, **kwargs)
def ele(self, def ele(self,
loc_or_ele: Union[Tuple[str, str], str, DriverElement, SessionElement, WebElement], loc_or_ele: Union[Tuple[str, str], str, DriverElement, SessionElement, WebElement],
@ -220,7 +218,7 @@ class MixPage(SessionPage, DriverPage, BasePage):
:param interval: 重试间隔 :param interval: 重试间隔
:param show_errmsg: 是否抛出异常 :param show_errmsg: 是否抛出异常
:param kwargs: 连接参数 :param kwargs: 连接参数
:return: s模式为Response对象d模式为bool :return: s模式为Response对象d模式为bool或None
""" """
if self._mode == 'd': if self._mode == 'd':
return super(SessionPage, self)._try_to_connect(to_url, times, interval, show_errmsg) return super(SessionPage, self)._try_to_connect(to_url, times, interval, show_errmsg)
@ -356,15 +354,13 @@ class MixPage(SessionPage, DriverPage, BasePage):
def post(self, def post(self,
url: str, url: str,
data: Union[dict, str] = None, data: Union[dict, str] = None,
go_anyway: bool = True,
show_errmsg: bool = False, show_errmsg: bool = False,
retry: int = None, retry: int = None,
interval: float = None, interval: float = None,
**kwargs) -> Union[bool, None]: **kwargs) -> bool:
"""用post方式跳转到url会切换到s模式 \n """用post方式跳转到url会切换到s模式 \n
:param url: 目标url :param url: 目标url
:param data: post方式时提交的数据 :param data: post方式时提交的数据
:param go_anyway: 若目标url与当前url一致是否强制跳转
:param show_errmsg: 是否显示和抛出异常 :param show_errmsg: 是否显示和抛出异常
:param retry: 重试次数 :param retry: 重试次数
:param interval: 重试间隔 :param interval: 重试间隔
@ -372,7 +368,7 @@ class MixPage(SessionPage, DriverPage, BasePage):
:return: url是否可用 :return: url是否可用
""" """
self.change_mode('s', go=False) self.change_mode('s', go=False)
return super().post(url, data, go_anyway, show_errmsg, retry, interval, **kwargs) return super().post(url, data, show_errmsg, retry, interval, **kwargs)
@property @property
def download(self) -> DownloadKit: def download(self) -> DownloadKit:

View File

@ -59,14 +59,12 @@ class SessionPage(BasePage):
def get(self, def get(self,
url: str, url: str,
go_anyway: bool = False,
show_errmsg: bool = False, show_errmsg: bool = False,
retry: int = None, retry: int = None,
interval: float = None, interval: float = None,
**kwargs) -> Union[bool, None]: **kwargs) -> bool:
"""用get方式跳转到url \n """用get方式跳转到url \n
:param url: 目标url :param url: 目标url
:param go_anyway: 若目标url与当前url一致是否强制跳转
:param show_errmsg: 是否显示和抛出异常 :param show_errmsg: 是否显示和抛出异常
:param retry: 重试次数 :param retry: 重试次数
:param interval: 重试间隔 :param interval: 重试间隔
@ -74,11 +72,11 @@ class SessionPage(BasePage):
:return: url是否可用 :return: url是否可用
""" """
to_url = quote(url, safe='/:&?=%;#@+!') to_url = quote(url, safe='/:&?=%;#@+!')
retry = int(retry) if retry is not None else int(self.retry_times) retry = retry if retry is not None else self.retry_times
interval = int(interval) if interval is not None else int(self.retry_interval) interval = interval if interval is not None else self.retry_interval
if not url or (not go_anyway and self.url == to_url): if not url:
return raise ValueError('没有传入url。')
self._url = to_url self._url = to_url
self._response = self._try_to_connect(to_url, times=retry, interval=interval, show_errmsg=show_errmsg, **kwargs) self._response = self._try_to_connect(to_url, times=retry, interval=interval, show_errmsg=show_errmsg, **kwargs)
@ -198,6 +196,7 @@ class SessionPage(BasePage):
if _ < times: if _ < times:
sleep(interval) sleep(interval)
if show_errmsg:
print(f'重试 {to_url}') print(f'重试 {to_url}')
if not r and show_errmsg: if not r and show_errmsg:
@ -226,15 +225,13 @@ class SessionPage(BasePage):
def post(self, def post(self,
url: str, url: str,
data: Union[dict, str] = None, data: Union[dict, str] = None,
go_anyway: bool = True,
show_errmsg: bool = False, show_errmsg: bool = False,
retry: int = None, retry: int = None,
interval: float = None, interval: float = None,
**kwargs) -> Union[bool, None]: **kwargs) -> bool:
"""用post方式跳转到url \n """用post方式跳转到url \n
:param url: 目标url :param url: 目标url
:param data: 提交的数据 :param data: 提交的数据
:param go_anyway: 若目标url与当前url一致是否强制跳转
:param show_errmsg: 是否显示和抛出异常 :param show_errmsg: 是否显示和抛出异常
:param retry: 重试次数 :param retry: 重试次数
:param interval: 重试间隔 :param interval: 重试间隔
@ -242,11 +239,11 @@ class SessionPage(BasePage):
:return: url是否可用 :return: url是否可用
""" """
to_url = quote(url, safe='/:&?=%;#@+!') to_url = quote(url, safe='/:&?=%;#@+!')
retry = int(retry) if retry is not None else int(self.retry_times) retry = retry if retry is not None else self.retry_times
interval = int(interval) if interval is not None else int(self.retry_interval) interval = interval if interval is not None else self.retry_interval
if not url or (not go_anyway and self._url == to_url): if not url:
return raise ValueError('没有传入url。')
self._url = to_url self._url = to_url
self._response = self._try_to_connect(to_url, retry, interval, 'post', data, show_errmsg, **kwargs) self._response = self._try_to_connect(to_url, retry, interval, 'post', data, show_errmsg, **kwargs)