From c62b28d50e8da9d7b508e93c2f3ad42b53f1a914 Mon Sep 17 00:00:00 2001 From: g1879 Date: Tue, 1 Dec 2020 00:53:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84cookies=E6=96=B9=E9=9D=A2?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=8C=E6=9C=AA=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DrissionPage/drission.py | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/DrissionPage/drission.py b/DrissionPage/drission.py index 4146312..9d06d60 100644 --- a/DrissionPage/drission.py +++ b/DrissionPage/drission.py @@ -156,24 +156,30 @@ class Drission(object): self._ensure_add_cookie(cookie) def set_cookies(self, - cookies: Union[RequestsCookieJar, list, tuple], + cookies: Union[RequestsCookieJar, list, tuple, str], set_session: bool = False, - set_driver: bool = False): + set_driver: bool = False) -> None: if isinstance(cookies, (list, tuple, RequestsCookieJar)): cookies = tuple(_cookie_to_dict(cookie) for cookie in cookies) + elif isinstance(cookies, str): + cookies = tuple(dict([cookie.split("=", 1)]) for cookie in cookies.split("; ")) + elif isinstance(cookies, dict): + cookies = tuple({'name': cookie, 'value': cookies[cookie]} for cookie in cookies) else: raise TypeError - if set_session: - pass + for cookie in cookies: + if set_session: + kwargs = {x: cookie[x] for x in cookie if x not in ('name', 'value')} + self.session.cookies.set(cookie['name'], cookie['value'], **kwargs) - if set_driver: - pass + if set_driver: + self.driver.add_cookie(cookie) - def add_cookie(self): + def add_a_cookie(self): pass - def remove_cookie(self): + def remove_a_cookie(self): pass def clear_cookies(self): @@ -187,14 +193,7 @@ class Drission(object): 'cert', 'stream', 'trust_env', 'max_redirects'] # , 'adapters' if 'cookies' in data: - if isinstance(data['cookies'], (list, tuple)): - for cookie in data['cookies']: - kwargs = {x: cookie[x] for x in cookie if x not in ('name', 'value')} - self._session.cookies.set(cookie['name'], cookie['value'], **kwargs) - - elif isinstance(data['cookies'], RequestsCookieJar): - for cookie in data['cookies']: - self._session.cookies.set_cookie(cookie) + self.set_cookies(data['cookies'], set_driver=False) for i in attrs: if i in data: