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