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

如何用Selenium+Python操控Chrome的MetaMask扩展弹窗完成OpenSea登录?

Opensea + MetaMask 自动化登录解决方案

MetaMask的登录弹窗属于Chrome扩展的独立窗口,Selenium默认仅聚焦主标签页,因此需要切换窗口句柄才能实现交互,以下是具体实现步骤:

1. 获取MetaMask扩展ID

  • 打开Chrome浏览器,访问chrome://extensions/,开启页面右上角的开发者模式
  • 找到MetaMask扩展,复制其唯一ID(示例格式:nkbihfbeogaeaoehlefnkodbefgpgknn)

2. 配置Chrome启动参数

启动Chrome时需加载MetaMask扩展并允许弹窗,示例代码如下:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
# 加载本地MetaMask扩展,替换为你的扩展实际目录(路径格式:Chrome用户数据文件夹/Extensions/扩展ID/版本号文件夹)
chrome_options.add_argument('--load-extension=C:\\Users\\你的用户名\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Extensions\\nkbihfbeogaeaoehlefnkodbefgpgknn\\10.28.2_0')
# 禁用弹窗拦截
chrome_options.add_argument('--disable-popup-blocking')
# 可选:复用已有的Chrome用户数据,避免每次自动化都重新配置MetaMask账户
chrome_options.add_argument(r'--user-data-dir=C:\Users\你的用户名\AppData\Local\Google\Chrome\User Data')

driver = webdriver.Chrome(options=chrome_options)

3. 切换到MetaMask弹窗窗口

点击Opensea的MetaMask登录按钮后,等待弹窗加载完成,再遍历窗口句柄切换到弹窗:

import time
from selenium.webdriver.common.by import By

# 打开Opensea登录页
driver.get('https://opensea.io/login')

# 点击MetaMask登录按钮(选择器需根据页面实际结构调整)
metamask_btn = driver.find_element(By.XPATH, '//button[contains(text(), "MetaMask")]')
metamask_btn.click()

# 等待弹窗加载(或用WebDriverWait显式等待提升稳定性)
time.sleep(2)

# 遍历所有窗口句柄,切换到非主窗口的弹窗
all_handles = driver.window_handles
for handle in all_handles:
    if handle != driver.current_window_handle:
        driver.switch_to.window(handle)
        break

4. 交互MetaMask弹窗

切换窗口后,即可像操作普通页面一样定位元素完成密码输入、按钮点击等操作:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 显式等待密码输入框出现
password_input = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, 'password'))
)
password_input.send_keys('你的MetaMask密码')

# 点击解锁按钮
unlock_btn = driver.find_element(By.XPATH, '//button[text()="解锁"]')
unlock_btn.click()

# 后续Opensea授权按钮同理,需根据实际DOM结构定位后点击

5. 切回Opensea主窗口

完成MetaMask操作后,切换回原Opensea页面继续后续流程:

driver.switch_to.window(all_handles[0])

注意事项

  • 建议提前在Chrome用户数据中配置好MetaMask账户(导入钱包、设置密码),避免自动化流程中重复配置
  • MetaMask的DOM结构可能随版本更新变化,定位元素时需用Chrome开发者工具确认最新选择器
  • 优先使用WebDriverWait显式等待替代time.sleep(),减少因加载延迟导致的操作失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 06:20:22