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

如何在Python/Selenium中操作Chrome的USB设备配对弹窗?

解决Chrome USB设备配对弹窗的自动化方案

WebUSB API的可行性

WebUSB API完全可以用于浏览器与USB设备的直接连接,它是浏览器提供的JavaScript API,允许网页绕过系统原生配对弹窗,直接与兼容的USB设备通信,非常适合自动化测试场景。不过需要满足两个前提:

  • 测试网页需运行在HTTPS环境下(本地localhost例外)
  • 目标USB设备需支持WebUSB规范(可通过设备厂商文档确认)

方案1:Selenium+Chrome DevTools Protocol(CDP)干预USB权限与配对

Chrome的原生USB配对弹窗无法通过常规Selenium方法操作,但可以通过CDP直接控制USB设备的权限和配对流程,彻底避免弹窗出现:

步骤与示例代码

  1. 启动Chrome时启用CDP支持,并配置必要参数:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
# 允许本地HTTP页面使用WebUSB(如果测试环境是HTTP)
chrome_options.add_argument("--unsafely-treat-insecure-origin-as-secure=http://your-test-domain.com")
# 启用USB调试支持
chrome_options.add_argument("--enable-usb-detection")

driver = webdriver.Chrome(options=chrome_options)
  1. 使用CDP授予目标站点USB权限,并模拟设备连接:
# 授予目标域名USB设备访问权限
driver.execute_cdp_cmd("usb.grantPermissions", {
    "origin": "http://your-test-domain.com",
    "permissions": ["usb"]
})

# 模拟指定VID/PID的设备已连接(替换为你的设备VID和PID,十六进制)
driver.execute_cdp_cmd("usb.setDeviceOverride", {
    "vendorId": 0x1234,
    "productId": 0x5678,
    "deviceName": "Your Device Name"
})

方案2:直接通过Selenium执行WebUSB API代码

如果你的Web App本身支持WebUSB,可以直接在测试中通过Selenium执行JavaScript代码,调用WebUSB API完成设备连接,绕过系统弹窗:

示例代码

# 执行JS代码调用WebUSB API,请求指定设备
device = driver.execute_script("""
    return navigator.usb.requestDevice({
        filters: [{
            vendorId: 0x1234,  // 替换为你的设备VID
            productId: 0x5678  // 替换为你的设备PID
        }]
    }).then(device => device);
""")

# 可继续执行设备初始化操作(如发送指令)
driver.execute_script("""
    arguments[0].open().then(() => {
        // 这里添加设备通信逻辑
    });
""", device)

方案3:Chrome命令行参数自动允许设备

启动Chrome时添加--usb-device-filter参数,可自动允许指定VID/PID的USB设备,完全跳过配对弹窗:

示例启动参数

chrome_options.add_argument("--usb-device-filter=0x1234:0x5678")  # 替换为你的设备VID:PID

此方法适合不需要动态切换设备的场景,配置后Chrome会自动识别并允许目标设备。

各方案对比

  • 对比pyautogui的键盘模拟:以上方案均不依赖界面元素位置,稳定性更高,不会因弹窗布局变化、系统分辨率差异导致测试失败。
  • CDP方案:适合需要完全控制USB设备权限和模拟设备的场景。
  • WebUSB API方案:适合Web App本身已集成WebUSB功能的测试场景。
  • 命令行参数方案:适合固定设备的自动化测试,配置简单。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 11:57:43