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.web_page import WebPage
|
||||
|
||||
__version__ = '4.1.0.2'
|
||||
__version__ = '4.1.0.3'
|
||||
|
@ -6,6 +6,7 @@
|
||||
@License : BSD 3-Clause.
|
||||
"""
|
||||
from pathlib import Path
|
||||
from re import match
|
||||
from shutil import rmtree
|
||||
from threading import Lock
|
||||
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)
|
||||
tab = browser._get_tab(mix=mix)
|
||||
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"'
|
||||
tid = browser.latest_tab.tab_id
|
||||
tab.run_js(f'window.open({url}, {new})')
|
||||
|
@ -271,7 +271,8 @@ class ChromiumOptions(object):
|
||||
|
||||
def incognito(self, on_off=True):
|
||||
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):
|
||||
self._new_env = on_off
|
||||
|
@ -20,7 +20,6 @@ class BrowserCookiesSetter(object):
|
||||
|
||||
|
||||
class CookiesSetter(BrowserCookiesSetter):
|
||||
|
||||
def __call__(self, cookies):
|
||||
set_tab_cookies(self._owner, cookies)
|
||||
|
||||
@ -56,13 +55,12 @@ class SessionCookiesSetter(object):
|
||||
self._owner.session.cookies.clear()
|
||||
|
||||
|
||||
class WebPageCookiesSetter(CookiesSetter, SessionCookiesSetter):
|
||||
|
||||
class WebPageCookiesSetter(CookiesSetter):
|
||||
def __call__(self, cookies):
|
||||
if self._owner.mode == 'd' and self._owner._has_driver:
|
||||
super().__call__(cookies)
|
||||
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):
|
||||
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:
|
||||
if url or domain or path:
|
||||
raise AttributeError('url、domain、path参数只有d模式下有效。')
|
||||
super(CookiesSetter, self).remove(name)
|
||||
self._owner.session.cookies.set(name, None)
|
||||
|
||||
def clear(self):
|
||||
if self._owner.mode == 'd' and self._owner._has_driver:
|
||||
super().clear()
|
||||
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):
|
||||
_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 .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.web import format_headers
|
||||
from ..errors import ElementLostError, JavaScriptError
|
||||
@ -300,7 +301,7 @@ class MixTabSetter(TabSetter):
|
||||
@property
|
||||
def cookies(self):
|
||||
if self._cookies_setter is None:
|
||||
self._cookies_setter = WebPageCookiesSetter(self._owner)
|
||||
self._cookies_setter = MixTabCookiesSetter(self._owner)
|
||||
return self._cookies_setter
|
||||
|
||||
def headers(self, headers):
|
||||
|
Loading…
x
Reference in New Issue
Block a user