MacBook Air M1上Selenium+Python操控Chrome频繁崩溃问题求助
MacBook Air M1 下 Selenium+Chrome 自动化崩溃排查方案
在MacBook Air M1设备上使用Python结合Selenium操控Chrome时,出现浏览器频繁崩溃、无法正常与页面元素交互的异常。已尝试更新Chrome及ChromeDriver版本,仅能通过延长sleep()时长临时避免浏览器关闭,推测存在深层兼容性或配置冲突问题,可通过以下步骤排查:
强制适配M1原生架构:M1为arm64架构,Chrome默认可能运行在Rosetta兼容层,通过指定Chrome二进制路径并添加启动参数强制使用原生版本:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.binary_location = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" chrome_options.add_argument("--no-sandbox") chrome_options.add_argument("--disable-gpu") # 可选:启用无头模式排除UI层干扰 # chrome_options.add_argument("--headless=new") driver = webdriver.Chrome(options=chrome_options)严格匹配Chrome与ChromeDriver版本:通过
chrome://version/查看Chrome完整版本号,下载对应arm64版本的ChromeDriver,确保主版本、次版本、修订号完全一致。清理Chrome后台进程并关闭自动更新:
- 打开Chrome偏好设置 -> 关于Chrome,取消自动更新选项
- 执行终端命令杀掉所有Chrome相关进程:
killall "Google Chrome"和killall "Chrome Helper"
使用Selenium Manager自动管理驱动:Selenium 4.6及以上版本自带驱动管理功能,无需手动下载ChromeDriver,直接初始化即可自动匹配适配版本:
from selenium import webdriver driver = webdriver.Chrome()调整系统权限与安全设置:
- 进入系统设置 -> 隐私与安全性 -> 完全磁盘访问权限,添加Chrome应用
- 关闭Chrome的安全浏览功能:设置 -> 隐私与安全性 -> 安全浏览,选择“无保护”模式
替换sleep为显式等待:避免依赖固定时长的
sleep(),改用WebDriverWait实现元素等待,提升稳定性:from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # 等待目标元素出现,最长等待10秒 element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "target-element-id")) )
内容的提问来源于stack exchange,提问作者Saharsh
相关产品推荐
相关产品推荐

