diff --git a/sources/browser.py b/sources/browser.py index eff6bf7..5cb52f8 100644 --- a/sources/browser.py +++ b/sources/browser.py @@ -80,18 +80,36 @@ def install_chromedriver() -> str: """ Install the ChromeDriver if not already installed. Return the path. """ + # First try to use chromedriver in the project root directory (as per README) + project_root_chromedriver = "./chromedriver" + if os.path.exists(project_root_chromedriver) and os.access(project_root_chromedriver, os.X_OK): + print(f"Using ChromeDriver from project root: {project_root_chromedriver}") + return project_root_chromedriver + + # Then try to use the system-installed chromedriver chromedriver_path = shutil.which("chromedriver") - if not chromedriver_path: - try: - print("ChromeDriver not found, attempting to install automatically...") - chromedriver_path = chromedriver_autoinstaller.install() - except Exception as e: - raise FileNotFoundError( - "ChromeDriver not found and could not be installed automatically. " - "Please install it manually from https://chromedriver.chromium.org/downloads." - "and ensure it's in your PATH or specify the path directly." - "See know issues in readme if your chrome version is above 115." - ) from e + if chromedriver_path: + return chromedriver_path + + # In Docker environment, try the fixed path + if os.path.exists('/.dockerenv'): + docker_chromedriver_path = "/usr/local/bin/chromedriver" + if os.path.exists(docker_chromedriver_path) and os.access(docker_chromedriver_path, os.X_OK): + print(f"Using Docker ChromeDriver at {docker_chromedriver_path}") + return docker_chromedriver_path + + # Fallback to auto-installer only if no other option works + try: + print("ChromeDriver not found, attempting to install automatically...") + chromedriver_path = chromedriver_autoinstaller.install() + except Exception as e: + raise FileNotFoundError( + "ChromeDriver not found and could not be installed automatically. " + "Please install it manually from https://chromedriver.chromium.org/downloads." + "and ensure it's in your PATH or specify the path directly." + "See know issues in readme if your chrome version is above 115." + ) from e + if not chromedriver_path: raise FileNotFoundError("ChromeDriver not found. Please install it or add it to your PATH.") return chromedriver_path