Merge pull request !8 from g1879/develop
This commit is contained in:
g1879 2020-12-09 19:10:24 +08:00 committed by Gitee
commit 2481c7f3fa
5 changed files with 31 additions and 10 deletions

View File

@ -732,7 +732,7 @@ def _cookie_to_dict(cookie: Union[Cookie, str, dict]) -> dict:
cookie_dict = cookie
elif isinstance(cookie, str):
cookie = cookie.split(';')
cookie = cookie.split(',' if ',' in cookie else ';')
cookie_dict = {}
for key, attr in enumerate(cookie):
@ -761,7 +761,7 @@ def _cookies_to_tuple(cookies: Union[RequestsCookieJar, list, tuple, str, dict])
cookies = tuple(_cookie_to_dict(cookie) for cookie in cookies)
elif isinstance(cookies, str):
cookies = tuple(dict([cookie.lstrip().split("=", 1)]) for cookie in cookies.split(";"))
cookies = tuple(_cookie_to_dict(cookie.lstrip()) for cookie in cookies.split(";"))
elif isinstance(cookies, dict):
cookies = tuple({'name': cookie, 'value': cookies[cookie]} for cookie in cookies)

View File

@ -245,9 +245,21 @@ class Drission(object):
:param url: 作用域
:return: None
"""
url = extract(url)
domain = f'{url.domain}.{url.suffix}'
cookies = tuple(x for x in self.session.cookies if domain in x.domain)
browser_domain = extract(self.driver.current_url).fqdn
ex_url = extract(url)
if ex_url.fqdn not in browser_domain:
self.driver.get(url)
domain = f'{ex_url.domain}.{ex_url.suffix}'
cookies = []
for cookie in self.session.cookies:
if cookie.domain == '':
cookie.domain = domain
if domain in cookie.domain:
cookies.append(cookie)
self.set_cookies(cookies, set_driver=True)

View File

@ -140,9 +140,10 @@ class MixPage(Null, SessionPage, DriverPage):
elif self._mode == 'd':
return super(SessionPage, self).title
def set_cookies(self, cookies: Union[RequestsCookieJar, list, tuple, str, dict]) -> None:
def set_cookies(self, cookies: Union[RequestsCookieJar, list, tuple, str, dict], refresh: bool = True) -> None:
"""设置cookies \n
:param cookies: cookies信息可为CookieJar, list, tuple, str, dict
:param refresh: 设置cookies后是否刷新页面
:return: None
"""
if self._mode == 's':
@ -150,6 +151,9 @@ class MixPage(Null, SessionPage, DriverPage):
elif self._mode == 'd':
self.drission.set_cookies(cookies, set_driver=True)
if refresh:
self.refresh()
def get_cookies(self, as_dict: bool = False, all_domains: bool = False) -> Union[dict, list]:
"""返回cookies \n
:param as_dict: 是否以字典方式返回

View File

@ -77,9 +77,12 @@ class SessionPage(object):
if all_domains:
cookies = self.session.cookies
else:
url = extract(self.url)
domain = f'{url.domain}.{url.suffix}'
cookies = tuple(x for x in self.session.cookies if domain in x.domain)
if self.url:
url = extract(self.url)
domain = f'{url.domain}.{url.suffix}'
cookies = tuple(x for x in self.session.cookies if domain in x.domain or x.domain == '')
else:
cookies = tuple(x for x in self.session.cookies)
if as_dict:
return {x.name: x.value for x in cookies}

View File

@ -1416,7 +1416,9 @@ Set cookies.
Parameter Description:
- cookies: Union[RequestsCookieJar, list, tuple, str, dict] - cookies information, can be CookieJar, list, tuple, str, dict
- cookies: Union[RequestsCookieJar, list, tuple, str, dict] - cookies information, can be CookieJar, list, tuple, str,
dict
- refresh: bool - Whether to refresh the page after setting cookies
Returns: None