#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Chrome配置检查脚本 验证32位ChromeDriver是否能正常驱动64位Chrome """ import os import sys import platform import subprocess def check_system_info(): """检查系统信息""" print("🖥️ 系统信息检查") print("=" * 40) # 系统架构 system_arch = platform.architecture()[0] machine = platform.machine() print(f"系统架构: {system_arch}") print(f"处理器: {machine}") # 判断是否64位系统 is_64bit = system_arch == '64bit' or 'AMD64' in machine print(f"64位系统: {'✅ 是' if is_64bit else '❌ 否'}") return is_64bit def check_chrome_installation(): """检查Chrome安装情况""" print("\n🌐 Chrome浏览器检查") print("=" * 40) # Chrome可能的安装路径 chrome_paths = [ r"C:\Program Files\Google\Chrome\Application\chrome.exe", r"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe", r"C:\Users\{}\AppData\Local\Google\Chrome\Application\chrome.exe".format(os.getenv('USERNAME', '')) ] chrome_found = False chrome_path = None chrome_is_64bit = False for path in chrome_paths: if os.path.exists(path): chrome_found = True chrome_path = path # 如果Chrome在Program Files目录,通常是64位 chrome_is_64bit = "Program Files" in path and "(x86)" not in path print(f"✅ 找到Chrome: {path}") print(f"Chrome位数: {'64位' if chrome_is_64bit else '32位或未确定'}") break if not chrome_found: print("❌ 未找到Chrome浏览器") return False, None, False # 尝试获取Chrome版本 try: result = subprocess.run([chrome_path, '--version'], capture_output=True, text=True, timeout=5) if result.returncode == 0: version = result.stdout.strip() print(f"Chrome版本: {version}") else: print("⚠️ 无法获取Chrome版本") except Exception as e: print(f"⚠️ 获取版本失败: {e}") return True, chrome_path, chrome_is_64bit def check_chromedriver(): """检查ChromeDriver""" print("\n🚗 ChromeDriver检查") print("=" * 40) # 可能的ChromeDriver路径 driver_paths = [ "chromedriver.exe", "downloads/chromedriver.exe", "./chromedriver.exe" ] driver_found = False driver_path = None for path in driver_paths: if os.path.exists(path): driver_found = True driver_path = path print(f"✅ 找到ChromeDriver: {path}") break if not driver_found: print("❌ 未找到ChromeDriver") return False, None # 获取ChromeDriver版本和架构信息 try: result = subprocess.run([driver_path, '--version'], capture_output=True, text=True, timeout=5) if result.returncode == 0: version_info = result.stdout.strip() print(f"ChromeDriver版本: {version_info}") # ChromeDriver通常是32位的,这是正常的 print("📋 说明: ChromeDriver通常是32位程序,这是正常的") else: print("⚠️ 无法获取ChromeDriver版本") except Exception as e: print(f"⚠️ 获取版本失败: {e}") return True, driver_path def test_selenium_connection(): """测试Selenium连接""" print("\n🧪 Selenium连接测试") print("=" * 40) try: from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options print("✅ Selenium模块导入成功") # 查找ChromeDriver driver_paths = ["chromedriver.exe", "downloads/chromedriver.exe", "./chromedriver.exe"] driver_path = None for path in driver_paths: if os.path.exists(path): driver_path = path break if not driver_path: print("❌ 未找到ChromeDriver,跳过连接测试") return False # 配置Chrome选项 chrome_options = Options() chrome_options.add_argument('--headless') # 无头模式,不显示浏览器 chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--disable-dev-shm-usage') # 创建服务 service = Service(driver_path) print("🚀 正在启动Chrome WebDriver...") # 创建WebDriver driver = webdriver.Chrome(service=service, options=chrome_options) # 简单测试 driver.get("data:text/html,

Test Page

") title = driver.title # 获取浏览器信息 user_agent = driver.execute_script("return navigator.userAgent") driver.quit() print("✅ Chrome WebDriver连接成功!") print(f"📄 测试页面标题: {title}") print(f"🔍 浏览器信息: {user_agent}") # 分析浏览器位数 if "WOW64" in user_agent or "Win64; x64" in user_agent: print("🎯 确认: 运行的是64位Chrome浏览器") else: print("🎯 运行的Chrome浏览器位数: 32位或未确定") return True except ImportError: print("❌ 未安装Selenium模块") print("💡 安装命令: pip install selenium") return False except Exception as e: print(f"❌ 连接测试失败: {e}") return False def main(): """主函数""" print("🔍 Chrome配置全面检查") print("=" * 50) # 系统信息检查 is_64bit_system = check_system_info() # Chrome检查 chrome_found, chrome_path, chrome_is_64bit = check_chrome_installation() # ChromeDriver检查 driver_found, driver_path = check_chromedriver() # Selenium测试 selenium_ok = test_selenium_connection() # 总结 print("\n📋 检查总结") print("=" * 50) print(f"64位系统: {'✅' if is_64bit_system else '❌'}") print(f"Chrome浏览器: {'✅' if chrome_found else '❌'}") print(f"ChromeDriver: {'✅' if driver_found else '❌'}") print(f"Selenium测试: {'✅' if selenium_ok else '❌'}") print("\n💡 重要说明:") print("• 32位ChromeDriver可以完美驱动64位Chrome浏览器") print("• 这是Google官方的标准设计,不存在兼容性问题") print("• ChromeDriver通过网络协议与Chrome通信,位数无关") if chrome_found and driver_found: print("\n🎉 配置正常!可以开始使用Selenium了") else: print("\n⚠️ 需要安装缺失的组件") if not chrome_found: print("📥 下载Chrome: https://www.google.com/chrome/") if not driver_found: print("📥 下载ChromeDriver: https://chromedriver.chromium.org/downloads") if __name__ == "__main__": main() print() input("按Enter键退出...")