From f5b6e3c90f6ad4a2327a323207aed80d50b1711b Mon Sep 17 00:00:00 2001 From: g1879 Date: Thu, 2 Mar 2023 15:39:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8D=E6=8C=87=E5=AE=9Auser=5Fdata=5Fpath?= =?UTF-8?q?=E6=97=B6=E4=BD=BF=E7=94=A8=E4=B8=B4=E6=97=B6=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=A4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DrissionPage/commons/browser.py | 21 +++++++++++++++++++-- DrissionPage/configs/chromium_options.py | 2 +- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/DrissionPage/commons/browser.py b/DrissionPage/commons/browser.py index 1d204de..39fbc41 100644 --- a/DrissionPage/commons/browser.py +++ b/DrissionPage/commons/browser.py @@ -7,6 +7,7 @@ from json import load, dump from pathlib import Path from platform import system from subprocess import Popen +from tempfile import gettempdir from time import perf_counter, sleep from requests import get as requests_get @@ -61,7 +62,23 @@ def get_launch_args(opt): :return: 启动参数列表 """ # ----------处理arguments----------- - result = set(i for i in opt.arguments if not i.startswith(('--load-extension=', '--remote-debugging-port='))) + result = set() + has_user_path = False + for i in opt.arguments: + if i.startswith(('--load-extension=', '--remote-debugging-port=')): + continue + elif i.startswith('--user-data-dir'): + p = Path(i[16:]).absolute() + result.add(f'--user-data-dir={p}') + has_user_path = True + result.add(i) + + if not has_user_path: + port = opt.debugger_address.split(':')[-1] if opt.debugger_address else '0' + path = Path(gettempdir()) / 'DrissionPage' / f'userData_{port}' + path.mkdir(parents=False, exist_ok=True) + result.add(f'--user-data-dir={path}') + result = list(result) # ----------处理插件extensions------------- @@ -140,7 +157,7 @@ def _run_browser(port, path: str, args) -> Popen: except Exception: sleep(.2) - raise ConnectionError('无法连接浏览器。') + raise ConnectionError('连接浏览器失败。') def _make_leave_in_dict(target_dict: dict, src: list, num: int, end: int) -> None: diff --git a/DrissionPage/configs/chromium_options.py b/DrissionPage/configs/chromium_options.py index 915db73..996f1d8 100644 --- a/DrissionPage/configs/chromium_options.py +++ b/DrissionPage/configs/chromium_options.py @@ -392,7 +392,7 @@ class PortFinder(object): used_port = [] def __init__(self): - self.tmp_dir = Path(gettempdir()) / 'DrissionPageTempFolder' + self.tmp_dir = Path(gettempdir()) / 'DrissionPage' / 'TempFolder' self.tmp_dir.mkdir(parents=True, exist_ok=True) if not PortFinder.used_port: clean_folder(self.tmp_dir)