mirror of
https://gitee.com/g1879/DrissionPage.git
synced 2024-12-10 04:00:23 +08:00
4.1.0.3修复cookies设置问题;修复edge不能进入隐私模式问题
This commit is contained in:
parent
705fbb398c
commit
4c427042e3
@ -12,4 +12,4 @@ from ._pages.chromium_page import ChromiumPage
|
|||||||
from ._pages.session_page import SessionPage
|
from ._pages.session_page import SessionPage
|
||||||
from ._pages.web_page import WebPage
|
from ._pages.web_page import WebPage
|
||||||
|
|
||||||
__version__ = '4.1.0.2'
|
__version__ = '4.1.0.3'
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
@License : BSD 3-Clause.
|
@License : BSD 3-Clause.
|
||||||
"""
|
"""
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
from re import match
|
||||||
from shutil import rmtree
|
from shutil import rmtree
|
||||||
from threading import Lock
|
from threading import Lock
|
||||||
from time import sleep, perf_counter
|
from time import sleep, perf_counter
|
||||||
@ -476,6 +477,8 @@ def _new_tab_by_js(browser: Chromium, url, obj, new_window):
|
|||||||
mix = isinstance(obj, MixTab)
|
mix = isinstance(obj, MixTab)
|
||||||
tab = browser._get_tab(mix=mix)
|
tab = browser._get_tab(mix=mix)
|
||||||
url = f'"{url}"' if url else ''
|
url = f'"{url}"' if url else ''
|
||||||
|
if url and not match(r'^.*?://.*', url):
|
||||||
|
raise ValueError(f'url也许需要加上http://?')
|
||||||
new = 'target="_new"' if new_window else 'target="_blank"'
|
new = 'target="_new"' if new_window else 'target="_blank"'
|
||||||
tid = browser.latest_tab.tab_id
|
tid = browser.latest_tab.tab_id
|
||||||
tab.run_js(f'window.open({url}, {new})')
|
tab.run_js(f'window.open({url}, {new})')
|
||||||
|
@ -271,7 +271,8 @@ class ChromiumOptions(object):
|
|||||||
|
|
||||||
def incognito(self, on_off=True):
|
def incognito(self, on_off=True):
|
||||||
on_off = None if on_off else False
|
on_off = None if on_off else False
|
||||||
return self.set_argument('--incognito', on_off)
|
self.set_argument('--incognito', on_off)
|
||||||
|
return self.set_argument('--inprivate', on_off) # edge
|
||||||
|
|
||||||
def new_env(self, on_off=True):
|
def new_env(self, on_off=True):
|
||||||
self._new_env = on_off
|
self._new_env = on_off
|
||||||
|
@ -20,7 +20,6 @@ class BrowserCookiesSetter(object):
|
|||||||
|
|
||||||
|
|
||||||
class CookiesSetter(BrowserCookiesSetter):
|
class CookiesSetter(BrowserCookiesSetter):
|
||||||
|
|
||||||
def __call__(self, cookies):
|
def __call__(self, cookies):
|
||||||
set_tab_cookies(self._owner, cookies)
|
set_tab_cookies(self._owner, cookies)
|
||||||
|
|
||||||
@ -56,13 +55,12 @@ class SessionCookiesSetter(object):
|
|||||||
self._owner.session.cookies.clear()
|
self._owner.session.cookies.clear()
|
||||||
|
|
||||||
|
|
||||||
class WebPageCookiesSetter(CookiesSetter, SessionCookiesSetter):
|
class WebPageCookiesSetter(CookiesSetter):
|
||||||
|
|
||||||
def __call__(self, cookies):
|
def __call__(self, cookies):
|
||||||
if self._owner.mode == 'd' and self._owner._has_driver:
|
if self._owner.mode == 'd' and self._owner._has_driver:
|
||||||
super().__call__(cookies)
|
super().__call__(cookies)
|
||||||
elif self._owner.mode == 's' and self._owner._has_session:
|
elif self._owner.mode == 's' and self._owner._has_session:
|
||||||
super(CookiesSetter, self).__call__(cookies)
|
set_session_cookies(self._owner.session, cookies)
|
||||||
|
|
||||||
def remove(self, name, url=None, domain=None, path=None):
|
def remove(self, name, url=None, domain=None, path=None):
|
||||||
if self._owner.mode == 'd' and self._owner._has_driver:
|
if self._owner.mode == 'd' and self._owner._has_driver:
|
||||||
@ -70,10 +68,32 @@ class WebPageCookiesSetter(CookiesSetter, SessionCookiesSetter):
|
|||||||
elif self._owner.mode == 's' and self._owner._has_session:
|
elif self._owner.mode == 's' and self._owner._has_session:
|
||||||
if url or domain or path:
|
if url or domain or path:
|
||||||
raise AttributeError('url、domain、path参数只有d模式下有效。')
|
raise AttributeError('url、domain、path参数只有d模式下有效。')
|
||||||
super(CookiesSetter, self).remove(name)
|
self._owner.session.cookies.set(name, None)
|
||||||
|
|
||||||
def clear(self):
|
def clear(self):
|
||||||
if self._owner.mode == 'd' and self._owner._has_driver:
|
if self._owner.mode == 'd' and self._owner._has_driver:
|
||||||
super().clear()
|
super().clear()
|
||||||
elif self._owner.mode == 's' and self._owner._has_session:
|
elif self._owner.mode == 's' and self._owner._has_session:
|
||||||
super(CookiesSetter, self).clear()
|
self._owner.session.cookies.clear()
|
||||||
|
|
||||||
|
|
||||||
|
class MixTabCookiesSetter(CookiesSetter):
|
||||||
|
def __call__(self, cookies):
|
||||||
|
if self._owner._d_mode and self._owner._driver.is_running:
|
||||||
|
super().__call__(cookies)
|
||||||
|
elif not self._owner._d_mode and self._owner._session:
|
||||||
|
set_session_cookies(self._owner.session, cookies)
|
||||||
|
|
||||||
|
def remove(self, name, url=None, domain=None, path=None):
|
||||||
|
if self._owner._d_mode and self._owner._driver.is_running:
|
||||||
|
super().remove(name, url, domain, path)
|
||||||
|
elif not self._owner._d_mode and self._owner._session:
|
||||||
|
if url or domain or path:
|
||||||
|
raise AttributeError('url、domain、path参数只有d模式下有效。')
|
||||||
|
self._owner.session.cookies.set(name, None)
|
||||||
|
|
||||||
|
def clear(self):
|
||||||
|
if self._owner._d_mode and self._owner._driver.is_running:
|
||||||
|
super().clear()
|
||||||
|
elif not self._owner._d_mode and self._owner._session:
|
||||||
|
self._owner.session.cookies.clear()
|
||||||
|
@ -100,11 +100,46 @@ class SessionCookiesSetter(object):
|
|||||||
|
|
||||||
|
|
||||||
class WebPageCookiesSetter(CookiesSetter, SessionCookiesSetter):
|
class WebPageCookiesSetter(CookiesSetter, SessionCookiesSetter):
|
||||||
_owner: Union[WebPage, MixTab] = ...
|
_owner: WebPage = ...
|
||||||
|
|
||||||
def __init__(self, owner: Union[WebPage, MixTab]):
|
def __init__(self, owner: WebPage):
|
||||||
"""
|
"""
|
||||||
:param owner: WebPage, MixTab对象
|
:param owner: WebPage对象
|
||||||
|
"""
|
||||||
|
...
|
||||||
|
|
||||||
|
def __call__(self, cookies: Union[CookieJar, Cookie, list, tuple, str, dict]) -> None:
|
||||||
|
"""设置一个或多个cookie
|
||||||
|
:param cookies: cookies信息
|
||||||
|
:return: None
|
||||||
|
"""
|
||||||
|
...
|
||||||
|
|
||||||
|
def remove(self,
|
||||||
|
name: str,
|
||||||
|
url: str = None,
|
||||||
|
domain: str = None,
|
||||||
|
path: str = None) -> None:
|
||||||
|
"""删除一个cookie
|
||||||
|
:param name: cookie的name字段
|
||||||
|
:param url: cookie的url字段,可选,d模式时才有效
|
||||||
|
:param domain: cookie的domain字段,可选,d模式时才有效
|
||||||
|
:param path: cookie的path字段,可选,d模式时才有效
|
||||||
|
:return: None
|
||||||
|
"""
|
||||||
|
...
|
||||||
|
|
||||||
|
def clear(self) -> None:
|
||||||
|
"""清除cookies"""
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
class MixTabCookiesSetter(CookiesSetter, SessionCookiesSetter):
|
||||||
|
_owner: MixTab = ...
|
||||||
|
|
||||||
|
def __init__(self, owner: MixTab):
|
||||||
|
"""
|
||||||
|
:param owner: MixTab对象
|
||||||
"""
|
"""
|
||||||
...
|
...
|
||||||
|
|
||||||
|
@ -10,7 +10,8 @@ from time import sleep
|
|||||||
|
|
||||||
from requests.structures import CaseInsensitiveDict
|
from requests.structures import CaseInsensitiveDict
|
||||||
|
|
||||||
from .cookies_setter import SessionCookiesSetter, CookiesSetter, WebPageCookiesSetter, BrowserCookiesSetter
|
from .cookies_setter import (SessionCookiesSetter, CookiesSetter, WebPageCookiesSetter, BrowserCookiesSetter,
|
||||||
|
MixTabCookiesSetter)
|
||||||
from .._functions.tools import show_or_hide_browser
|
from .._functions.tools import show_or_hide_browser
|
||||||
from .._functions.web import format_headers
|
from .._functions.web import format_headers
|
||||||
from ..errors import ElementLostError, JavaScriptError
|
from ..errors import ElementLostError, JavaScriptError
|
||||||
@ -300,7 +301,7 @@ class MixTabSetter(TabSetter):
|
|||||||
@property
|
@property
|
||||||
def cookies(self):
|
def cookies(self):
|
||||||
if self._cookies_setter is None:
|
if self._cookies_setter is None:
|
||||||
self._cookies_setter = WebPageCookiesSetter(self._owner)
|
self._cookies_setter = MixTabCookiesSetter(self._owner)
|
||||||
return self._cookies_setter
|
return self._cookies_setter
|
||||||
|
|
||||||
def headers(self, headers):
|
def headers(self, headers):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user