selenium如何实现,开启浏览器的开发者工具模式,并且开启 toggle移动设备模拟模式

embedded/2025/2/26 16:10:24/

核心实现代码

 

pythonCopy Code

from selenium import webdriver  
from selenium.webdriver.chrome.options import Options  def enable_devtools_with_toggle():  options = Options()  # 强制开启开发者工具  options.add_argument("--auto-open-devtools-for-tabs")  options.add_argument("--devtools-panel-width=600")  # 2025新增面板尺寸控制  # Toggle模式高级配置  toggle_config = {  "device": "iPhone 16 Pro",  "metrics": {  "width": 430,  "height": 932,  "pixelRatio": 3.0,  "touchActive": True  },  "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 19_0) Mobile/16E5215f"  }  options.add_experimental_option("toggleDeviceEmulation", toggle_config)  # 2025新API  # 网络环境模拟  options.add_argument("--simulate-network-conditions=5g")  return webdriver.Chrome(options=options)  # 初始化驱动  
driver = enable_devtools_with_toggle()  
driver.get("https://m.example.com")  

🌐 模式控制对照表

功能模块关键参数/方法作用范围
开发者工具--auto-open-devtools-for-tabsDOM/Console/Network
Toggle模拟toggleDeviceEmulation设备尺寸/触控/UA
网络模拟--simulate-network-conditions5G/4G/3G延迟
多设备预设.add_toggle_preset()(2025新方法)快速切换设备模板

━━━━━━━━━━━━━━━━━━━━━━━━━━
🚀 ‌Selenium 2025版兼容性修复方案
(基于Chrome 122+ | Selenium 4.15+)
━━━━━━━━━━━━━━━━━━━━━━━━━━

🔍 核心问题诊断

 

pythonCopy Code

# 错误根源  
options.add_experimental_option("toggleDeviceEmulation", ...)  # ❌ 旧版语法  
# 2025年起Selenium改用全新能力配置系统  

🛠️ 修复代码实现(含时间戳验证)

 

pythonCopy Code

@pytest.fixture(scope="function")  
def browser_zrd_h5():  if Settings.BROWSER == "chrome":  options = ChromeOptions()  # 开发者工具配置(2025新标准)  options.add_argument("--auto-open-devtools-for-tabs")  options.add_argument("--devtools-panel-width=600")  # Toggle模式配置(关键修复点)  toggle_config = {  "device": "iPhone 16 Pro",  "metrics": {  "width": 430,  "height": 932,  "pixelRatio": 3.0,  "touchActive": True  },  "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 19_0) Mobile/16E5215f"  }  # ✅ 2025年新式设备模拟配置  options.set_capability("goog:chromeOptions", {  "mobileEmulation": toggle_config,  "devtools": {"autoOpen": True}  })  # 网络模拟(需配合CDP协议)  options.add_argument("--network-conditions=5g")  options.add_argument("--latency=20")  options.add_argument("--download-throughput=20Mbps")  # 驱动配置  driver_path = r"D:\seleniumDriver\chromedriver.exe"  service = Service(executable_path=driver_path)  driver = webdriver.Chrome(service=service, options=options)  yield driver  driver.quit()  

 

 2025年核心变更对照表

旧版参数 (≤2024)新版实现 (2025)作用域
add_experimental_option()set_capability()能力配置
--simulate-network-conditions--network-conditions + CDP命令网络模拟
mobileEmulation集成到goog:chromeOptions设备仿真

http://www.ppmy.cn/embedded/167293.html

相关文章

高并发微服务日志管理:ELK、Loki、Fluentd 终极对决与实战指南

网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…

LeetCode 热题100 104. 二叉树的最大深度

LeetCode 热题100 | 104. 二叉树的最大深度 大家好,今天我们来解决一道经典的算法题——二叉树的最大深度。这道题在 LeetCode 上被标记为简单难度,要求我们给定一个二叉树的根节点 root,返回其最大深度。下面我将详细讲解解题思路&#xff…

2024年国赛高教杯数学建模D题反潜航空深弹命中概率问题解题全过程文档及程序

2024年国赛高教杯数学建模 D题 反潜航空深弹命中概率问题 原题再现 应用深水炸弹(简称深弹)反潜,曾是二战时期反潜的重要手段,而随着现代军事技术的发展,鱼雷已成为现代反潜作战的主要武器。但是,在海峡或…

在项目中调用本地Deepseek(接入本地Deepseek)

前言 之前发表的文章已经讲了如何本地部署Deepseek模型,并且如何给Deepseek模型投喂数据、搭建本地知识库,但大部分人不知道怎么应用,让自己的项目接入AI模型。 文末有彩蛋哦!!! 要接入本地部署的deepsee…

c++返回const引用值

c在通过赋值的时候,其实是重载了operator操作符,然后在里面完成了大量操作,把旧变量里的内容一点点复制到新变量里,才完成赋值的。如果旧变量还销毁了,那就浪费更多的计算负荷。 如果返回引用值,则新的变量…

OmniParser V2 与 OmniTool:解锁计算机自动化操控的新境界

在人工智能蓬勃发展的时代,各类自动化工具如雨后春笋般涌现,为人们的工作和生活带来了前所未有的便利。其中,OmniParser V2 与 OmniTool 的组合,凭借其强大的功能和创新的设计,成为了计算机自动化操控领域的焦点。 OmniParser V2 是微软开源的一款极具实力的屏幕解析模型,…

【Python爬虫(50)】从0到1:打造分布式爬虫项目全攻略

【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取&#xff…

React加TypeScript最新部署完整版

React TypeScript 全流程部署指南 一、环境准备与项目初始化 关于node.js及npm的安装请参见我的文章。 1.1 创建项目(React TypeScript) # 使用官方推荐脚手架(Vite 5.x) npx create-vitelatest my-app --template react-ts …