You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac M1 Pro环境下Python Selenium无法输入密码问题求助

解决M1 Mac上Selenium无法输入Naver密码的问题

针对M1 Pro Mac上Selenium无法输入Naver密码、但Windows系统正常的情况,给出以下可行的解决方法:

1. 修正Mac系统的粘贴快捷键

Mac的粘贴快捷键是Command + V,而非Windows的Control + V,当前代码用Keys.CONTROL导致粘贴失败。修改密码输入部分的代码:

# 替换原pw.send_keys(Keys.CONTROL, 'v')
pw.send_keys(Keys.COMMAND, 'v')

同时建议把账号输入的粘贴快捷键也修正:

# 替换原id.send_keys(Keys.CONTROL, 'v')
id.send_keys(Keys.COMMAND, 'v')

2. 直接输入账号密码(绕过剪贴板限制)

部分网站会对剪贴板操作做反爬限制,试试直接用send_keys输入,代替pyperclip粘贴:

# 账号输入替换
id = driver.find_element(By.CSS_SELECTOR, '#id')
id.click()
id.send_keys('myid')  # 直接输入账号

# 密码输入替换
pw = driver.find_element(By.CSS_SELECTOR, '#pw')
pw.click()
pw.send_keys('mypw')  # 直接输入密码

3. 确保ChromeDriver适配M1架构

webdriver_manager默认可能安装Intel架构的驱动,需指定M1版本。先查看Chrome版本(Chrome菜单→关于Google Chrome),再修改Service初始化代码:

# 替换原service初始化行,把driver_version换成你的Chrome版本号
service = Service(executable_path=ChromeDriverManager(driver_version='120.0.6099.109', os_type='mac_arm64').install())

4. 用显式等待替代time.sleep(提升稳定性)

隐式等待稳定性不如显式等待,确保元素可点击后再操作:

# 先导入显式等待相关模块
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 账号输入部分修改
id = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#id')))
id.click()
# 后续密码和登录按钮同理替换

修改后的完整示例代码

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
import time
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 防止浏览器自动关闭
chrome_options = Options()
chrome_options.add_experimental_option('detach', True)

# 指定M1架构的ChromeDriver
service = Service(executable_path=ChromeDriverManager(driver_version='你的Chrome版本号', os_type='mac_arm64').install())
driver = webdriver.Chrome(service=service, options=chrome_options)

driver.implicitly_wait(5)
driver.maximize_window()
driver.get("https://nid.naver.com/nidlogin.login?mode=form&url=https://www.naver.com/")

# 账号输入(直接输入+显式等待)
id = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#id')))
id.click()
id.send_keys('myid')
time.sleep(1)

# 密码输入(直接输入+显式等待)
pw = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#pw')))
pw.click()
pw.send_keys('mypw')
time.sleep(1)

# 点击登录按钮
login_btn = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#log\.login')))
login_btn.click()

内容的提问来源于stack exchange,提问作者insidepixce

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 17:23:12