diff --git a/DrissionPage/base.py b/DrissionPage/base.py index ab34bc1..62dd09f 100644 --- a/DrissionPage/base.py +++ b/DrissionPage/base.py @@ -346,7 +346,6 @@ class BasePage(BaseParser): @abstractmethod def get(self, url: str, - go_anyway: bool = False, show_errmsg: bool = False, retry: int = None, interval: float = None): diff --git a/DrissionPage/driver_page.py b/DrissionPage/driver_page.py index 22a06a5..89af002 100644 --- a/DrissionPage/driver_page.py +++ b/DrissionPage/driver_page.py @@ -64,24 +64,22 @@ class DriverPage(BasePage): def get(self, url: str, - go_anyway: bool = False, show_errmsg: bool = False, retry: int = None, interval: float = None) -> Union[None, bool]: """访问url \n :param url: 目标url - :param go_anyway: 若目标url与当前url一致,是否强制跳转 :param show_errmsg: 是否显示和抛出异常 :param retry: 重试次数 :param interval: 重试间隔(秒) - :return: 目标url是否可用 + :return: 目标url是否可用,返回None表示不确定 """ to_url = quote(url, safe='/:&?=%;#@+!') - retry = int(retry) if retry is not None else int(self.retry_times) - interval = int(interval) if interval is not None else int(self.retry_interval) + retry = retry if retry is not None else self.retry_times + interval = interval if interval is not None else self.retry_interval - if not url or (not go_anyway and self.url == to_url): - return + if not url: + raise ValueError('没有传入url。') self._url = to_url 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, times: int = 0, interval: float = 1, - show_errmsg: bool = False): + show_errmsg: bool = False) -> Union[bool, None]: """尝试连接,重试若干次 \n :param to_url: 要访问的url :param times: 重试次数 :param interval: 重试间隔(秒) :param show_errmsg: 是否抛出异常 - :return: 是否成功 + :return: 是否成功,返回None表示不确定 """ err = None is_ok = False @@ -204,7 +202,8 @@ class DriverPage(BasePage): if _ < times: sleep(interval) - print(f'重试 {to_url}') + if show_errmsg: + print(f'重试 {to_url}') if is_ok is False and show_errmsg: raise err if err is not None else ConnectionError('连接异常。') diff --git a/DrissionPage/mix_page.py b/DrissionPage/mix_page.py index 9088433..f25a845 100644 --- a/DrissionPage/mix_page.py +++ b/DrissionPage/mix_page.py @@ -113,24 +113,22 @@ class MixPage(SessionPage, DriverPage, BasePage): def get(self, url: str, - go_anyway: bool = False, show_errmsg: bool = False, retry: int = None, interval: float = None, **kwargs) -> Union[bool, None]: """跳转到一个url \n :param url: 目标url - :param go_anyway: 若目标url与当前url一致,是否强制跳转 :param show_errmsg: 是否显示和抛出异常 :param retry: 重试次数 :param interval: 重试间隔(秒) :param kwargs: 连接参数,s模式专用 - :return: url是否可用 + :return: url是否可用,d模式返回None时表示不确定 """ 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': - return super().get(url, go_anyway, show_errmsg, retry, interval, **kwargs) + return super().get(url, show_errmsg, retry, interval, **kwargs) def ele(self, loc_or_ele: Union[Tuple[str, str], str, DriverElement, SessionElement, WebElement], @@ -220,7 +218,7 @@ class MixPage(SessionPage, DriverPage, BasePage): :param interval: 重试间隔(秒) :param show_errmsg: 是否抛出异常 :param kwargs: 连接参数 - :return: s模式为Response对象,d模式为bool + :return: s模式为Response对象,d模式为bool或None """ if self._mode == 'd': 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, url: str, data: Union[dict, str] = None, - go_anyway: bool = True, show_errmsg: bool = False, retry: int = None, interval: float = None, - **kwargs) -> Union[bool, None]: + **kwargs) -> bool: """用post方式跳转到url,会切换到s模式 \n :param url: 目标url :param data: post方式时提交的数据 - :param go_anyway: 若目标url与当前url一致,是否强制跳转 :param show_errmsg: 是否显示和抛出异常 :param retry: 重试次数 :param interval: 重试间隔(秒) @@ -372,7 +368,7 @@ class MixPage(SessionPage, DriverPage, BasePage): :return: url是否可用 """ 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 def download(self) -> DownloadKit: diff --git a/DrissionPage/session_page.py b/DrissionPage/session_page.py index 85d3a5d..fbc7831 100644 --- a/DrissionPage/session_page.py +++ b/DrissionPage/session_page.py @@ -59,14 +59,12 @@ class SessionPage(BasePage): def get(self, url: str, - go_anyway: bool = False, show_errmsg: bool = False, retry: int = None, interval: float = None, - **kwargs) -> Union[bool, None]: + **kwargs) -> bool: """用get方式跳转到url \n :param url: 目标url - :param go_anyway: 若目标url与当前url一致,是否强制跳转 :param show_errmsg: 是否显示和抛出异常 :param retry: 重试次数 :param interval: 重试间隔(秒) @@ -74,11 +72,11 @@ class SessionPage(BasePage): :return: url是否可用 """ to_url = quote(url, safe='/:&?=%;#@+!') - retry = int(retry) if retry is not None else int(self.retry_times) - interval = int(interval) if interval is not None else int(self.retry_interval) + retry = retry if retry is not None else self.retry_times + interval = interval if interval is not None else self.retry_interval - if not url or (not go_anyway and self.url == to_url): - return + if not url: + raise ValueError('没有传入url。') self._url = to_url self._response = self._try_to_connect(to_url, times=retry, interval=interval, show_errmsg=show_errmsg, **kwargs) @@ -198,7 +196,8 @@ class SessionPage(BasePage): if _ < times: sleep(interval) - print(f'重试 {to_url}') + if show_errmsg: + print(f'重试 {to_url}') if not r and show_errmsg: raise err if err is not None else ConnectionError(f'连接异常。{r.status_code if r is not None else ""}') @@ -226,15 +225,13 @@ class SessionPage(BasePage): def post(self, url: str, data: Union[dict, str] = None, - go_anyway: bool = True, show_errmsg: bool = False, retry: int = None, interval: float = None, - **kwargs) -> Union[bool, None]: + **kwargs) -> bool: """用post方式跳转到url \n :param url: 目标url :param data: 提交的数据 - :param go_anyway: 若目标url与当前url一致,是否强制跳转 :param show_errmsg: 是否显示和抛出异常 :param retry: 重试次数 :param interval: 重试间隔(秒) @@ -242,11 +239,11 @@ class SessionPage(BasePage): :return: url是否可用 """ to_url = quote(url, safe='/:&?=%;#@+!') - retry = int(retry) if retry is not None else int(self.retry_times) - interval = int(interval) if interval is not None else int(self.retry_interval) + retry = retry if retry is not None else self.retry_times + interval = interval if interval is not None else self.retry_interval - if not url or (not go_anyway and self._url == to_url): - return + if not url: + raise ValueError('没有传入url。') self._url = to_url self._response = self._try_to_connect(to_url, retry, interval, 'post', data, show_errmsg, **kwargs)