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

如何在Python Selenium Chrome Webdriver中同时添加多个实验性选项

Selenium Chrome同时使用已打开窗口和移动端模拟的解决方案

问题根因

你遇到的报错和配置不生效问题由两个原因导致:

  1. add_experimental_option 方法除实例本身外仅接收2个参数:配置名、配置值,一次性传入4个参数属于API调用错误,必然触发TypeError。
  2. 当使用debuggerAddress连接已运行的Chrome进程时,所有启动阶段的配置参数(包括mobileEmulation)都会被Chrome忽略,因为进程启动完成后启动配置无法通过Selenium配置项动态修改,同时传入两个配置会触发参数不兼容报错。

可行解决方案

方案1:启动Chrome时同时开启远程调试和移动端模拟

如果你可以控制Chrome的启动过程,直接在启动时同时配置远程调试端口和移动端模拟即可,后续Selenium直接连接复用窗口:

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

opt = Options()
# 配置移动端模拟
opt.add_experimental_option("mobileEmulation", { "deviceName": "Pixel 2" })
# 开启远程调试端口,后续脚本可以直接连接这个端口复用窗口
opt.add_argument("--remote-debugging-port=8989")
# 可选:配置固定用户目录,保留浏览器的缓存、登录状态等
# opt.add_argument("--user-data-dir=你的本地用户目录路径")

driver = webdriver.Chrome(executable_path = my_path, options = opt)
driver.get(URL)

后续需要复用这个窗口时,直接用debuggerAddress连接localhost:8989即可,不需要再加mobileEmulation配置。


方案2:连接已运行Chrome后动态开启移动端模拟

如果你需要连接的Chrome已经打开、无法重启,可以通过Chrome DevTools Protocol(CDP)命令动态修改设备模拟配置,效果和启动时配置mobileEmulation完全一致:

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

opt = Options()
opt.add_experimental_option("debuggerAddress", "localhost:8989")
driver = webdriver.Chrome(executable_path = my_path, options = opt)

# 配置Pixel 2对应的设备参数
driver.execute_cdp_cmd('Emulation.setDeviceMetricsOverride', {
    "width": 411,
    "height": 731,
    "deviceScaleFactor": 2.625,
    "mobile": True,
    "fitWindow": False
})

# 配置Pixel 2对应的User-Agent
driver.execute_cdp_cmd('Network.setUserAgentOverride', {
    "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Pixel 2 Build/OPD1.170816.004) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36"
})

driver.get(URL)

内容的提问来源于stack exchange,提问作者ha.fi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:54:01