From 7149a417e45ee025b57deec77cf79dc15a47edf5 Mon Sep 17 00:00:00 2001 From: g1879 Date: Tue, 8 Dec 2020 14:07:17 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E4=BC=98=E5=8C=96cookies=E8=BD=AC=E6=8D=A2?= =?UTF-8?q?=E8=AF=AD=E5=8F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DrissionPage/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DrissionPage/config.py b/DrissionPage/config.py index b7ea249..1bf3af2 100644 --- a/DrissionPage/config.py +++ b/DrissionPage/config.py @@ -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) From d8a179918a3d55f26b8243c4dd48d9c6061c4203 Mon Sep 17 00:00:00 2001 From: g1879 Date: Tue, 8 Dec 2020 14:15:31 +0800 Subject: [PATCH 2/5] =?UTF-8?q?set=5Fcookies()=E5=A2=9E=E5=8A=A0refresh?= =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DrissionPage/mix_page.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/DrissionPage/mix_page.py b/DrissionPage/mix_page.py index a6fc180..4e4e0a7 100644 --- a/DrissionPage/mix_page.py +++ b/DrissionPage/mix_page.py @@ -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: 是否以字典方式返回 From 041eb68b05d1fcd1ecdb0fa74b727e27051588dd Mon Sep 17 00:00:00 2001 From: g1879 Date: Tue, 8 Dec 2020 14:17:02 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E6=94=B9=E8=BF=9Bcookies=E4=BC=A0=E9=80=92?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=8Cs=E8=BD=ACd=E6=97=B6=E5=9F=9F?= =?UTF-8?q?=E4=B8=BA=E7=A9=BA=E7=9A=84cookie=E4=BC=9A=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E5=9F=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DrissionPage/drission.py | 12 +++++++++++- DrissionPage/session_page.py | 9 ++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/DrissionPage/drission.py b/DrissionPage/drission.py index e305a54..3176164 100644 --- a/DrissionPage/drission.py +++ b/DrissionPage/drission.py @@ -245,9 +245,19 @@ class Drission(object): :param url: 作用域 :return: None """ + if self.driver.current_url != url: + self.driver.get(url) + url = extract(url) domain = f'{url.domain}.{url.suffix}' - cookies = tuple(x for x in self.session.cookies if domain in x.domain) + + 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) diff --git a/DrissionPage/session_page.py b/DrissionPage/session_page.py index ca7ca0c..060e50d 100644 --- a/DrissionPage/session_page.py +++ b/DrissionPage/session_page.py @@ -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} From e7b88c5619f94ee30a8680ee606e1c05ba7e78e1 Mon Sep 17 00:00:00 2001 From: g1879 Date: Fri, 11 Dec 2020 16:05:30 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dd=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E5=85=83=E7=B4=A0=E8=8E=B7=E5=8F=96=E5=AD=90=E5=85=83=E7=B4=A0?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DrissionPage/driver_element.py | 1 + 1 file changed, 1 insertion(+) diff --git a/DrissionPage/driver_element.py b/DrissionPage/driver_element.py index 68c48b6..68f5a9c 100644 --- a/DrissionPage/driver_element.py +++ b/DrissionPage/driver_element.py @@ -586,6 +586,7 @@ def execute_driver_find(page_or_ele, if timeout and timeout != page.timeout: wait = WebDriverWait(driver, timeout=timeout) else: + page.wait._driver = driver wait = page.wait if loc[0] == 'xpath': From c1454ab0dba8fb53dcd032a43d342a2758d7b2bb Mon Sep 17 00:00:00 2001 From: g1879 Date: Fri, 11 Dec 2020 16:35:28 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E5=BE=AE=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DrissionPage/drission.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/DrissionPage/drission.py b/DrissionPage/drission.py index dca4931..6930023 100644 --- a/DrissionPage/drission.py +++ b/DrissionPage/drission.py @@ -10,7 +10,7 @@ from typing import Union from requests import Session from requests.cookies import RequestsCookieJar from selenium import webdriver -from selenium.common.exceptions import SessionNotCreatedException +from selenium.common.exceptions import SessionNotCreatedException, WebDriverException from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.webdriver import WebDriver from tldextract import extract @@ -102,8 +102,8 @@ class Drission(object): self._driver = webdriver.Chrome(driver_path, options=options) - except SessionNotCreatedException: - print('Chrome版本与chromedriver版本不匹配,可执行easy_set.get_match_driver()自动下载匹配的版本。') + except (WebDriverException, SessionNotCreatedException): + print('未指定chromedriver路径或版本与Chrome不匹配,可执行easy_set.get_match_driver()自动下载匹配的版本。') exit(0) # 反爬设置,似乎没用