Selenium启动的Chrome手动操作极慢,M1 Mac下如何优化?
Selenium启动的Chrome在M1 Mac上卡顿的原因及解决方法
问题背景
我开发了一个脚本,自动登录Memrise词汇学习应用,为每个课程打开标签页,检查是否有剩余词汇需要复习:有则启动复习会话,无则关闭标签页。功能已实现,但Selenium启动的Chrome在手动操作时异常卡顿——比如输入内容要约5秒才显示,即使脚本执行完毕、保留驱动供手动复习时,浏览器依然不流畅。在活动监视器中发现:正常Chrome以Apple架构运行,而Selenium启动的Chrome以Intel架构运行,怀疑这是卡顿的核心原因。
核心原因
没错,架构不匹配是主要问题:M1/M2 Mac采用ARM架构,若Selenium调用的ChromeDriver是Intel版本,浏览器会通过Rosetta 2转译运行,转译过程会带来大量性能损耗,直接导致操作卡顿。此外,Selenium默认的启动参数未启用部分性能优化选项,也会加重卡顿问题。
解决方案
1. 安装适配Apple Silicon的Chrome与ChromeDriver
- 确认Chrome版本:打开Chrome,点击菜单>关于Google Chrome,查看是否标注“Apple Silicon”。若为Intel版本,前往官网下载ARM版本重新安装。
- 安装对应ARM版本的ChromeDriver:
- 查看Chrome的具体版本号,下载匹配的ARM64驱动;
- 或通过Homebrew安装:
brew install chromedriver(M1/M2上的Homebrew默认安装ARM架构软件)。
2. 优化Chrome启动参数
在初始化ChromeOptions时,添加性能优化参数,减少不必要的资源占用:
options = webdriver.ChromeOptions() prefs = { "download.default_directory" : download_dir, 'intl.accept_languages': 'en,en_US' } options.add_experimental_option("prefs", prefs) options.add_experimental_option("detach", True) options.add_experimental_option("useAutomationExtension", False) options.add_experimental_option("excludeSwitches", ["enable-automation", "enable-logging"]) # 性能优化参数 options.add_argument("--disable-extensions") options.add_argument("--disable-gpu") options.add_argument("--no-sandbox") options.add_argument("--disable-dev-shm-usage") options.add_argument("--disable-background-timer-throttling") options.add_argument("--disable-backgrounding-occluded-windows") options.add_argument("--disable-renderer-backgrounding") # 若Chrome路径非默认,可手动指定Apple Silicon版本的Chrome二进制文件路径 # options.binary_location = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" driver = webdriver.Chrome(options=options) driver.maximize_window()
3. 验证架构匹配
启动脚本后,打开活动监视器,查看Selenium启动的Chrome进程,确认“种类”列显示为“Apple”而非“Intel”,说明架构匹配成功。
额外优化建议
- 避免批量打开标签页:一次性打开多个标签页会占用大量内存,可改为逐个处理课程,完成一个再打开下一个;
- 替换废弃API:
switch_to_window已被废弃,建议使用driver.switch_to.window(remaining_window_handles[0]); - 优化等待逻辑:用
visibility_of_element_located代替presence_of_element_located,确保元素可见且可交互后再操作,减少无效等待。
内容的提问来源于stack exchange,提问作者Blaszard
相关产品推荐
相关产品推荐

