From 01f4ccaa0ef1e179d6f619644844742c5447a7ea Mon Sep 17 00:00:00 2001 From: KenanZhu <3471685733@qq.com> Date: Wed, 17 Jun 2026 10:22:27 +0800 Subject: [PATCH] =?UTF-8?q?fix(driver):=20macOS/Linux=20=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E7=9A=84=20Chrome/Edge=20=E9=A9=B1=E5=8A=A8=E7=BC=BA=E5=B0=91?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E6=9D=83=E9=99=90=E5=AF=BC=E8=87=B4=E8=BF=90?= =?UTF-8?q?=E8=A1=8C=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit zipfile 解压不保留 Unix 执行位,extract 后 chmod 755;同时在启动检查 时对已下载但不可执行的旧驱动自动修复权限。 Co-Authored-By: Claude --- src/managers/driver/WebDriverDownloader.py | 4 ++++ src/managers/driver/WebDriverManager.py | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/managers/driver/WebDriverDownloader.py b/src/managers/driver/WebDriverDownloader.py index e8189ae..681d9c8 100644 --- a/src/managers/driver/WebDriverDownloader.py +++ b/src/managers/driver/WebDriverDownloader.py @@ -360,6 +360,10 @@ class WebDriverDownloader: break if not driver_file: raise FileNotFoundError(f"未找到 web driver 文件 : {expected_name}") + # Ensure executable permissions on Unix systems (zipfile + # extraction does not preserve the execute bit). + if os.name != 'nt': + os.chmod(driver_file, 0o755) progress_callback(100, 100, 0.0, "解压完成") self.download_path.unlink() self._cleanup(driver_file) diff --git a/src/managers/driver/WebDriverManager.py b/src/managers/driver/WebDriverManager.py index 30b3645..7ab845d 100644 --- a/src/managers/driver/WebDriverManager.py +++ b/src/managers/driver/WebDriverManager.py @@ -111,6 +111,10 @@ class WebDriverManager: for driver_info in self.__driver_infos: driver_path = self._getDriverPath(driver_info) if driver_path and driver_path.exists() and driver_path.is_file(): + # Repair missing execute permission on Unix + # (zip-extracted drivers from older versions). + if os.name != 'nt' and not os.access(str(driver_path), os.X_OK): + os.chmod(str(driver_path), 0o755) driver_info.driver_path = driver_path driver_info.driver_status = WebDriverStatus.INSTALLED