当前位置: 首页 > news >正文

Web自动化之Selenium下Chrome与Edge的Webdriver常用Options参数

目录

引言      

说明

Add_argument()

添加方式

常用参数

Add_experimental_option()

添加方式

常用方法

任务结束后仍然保持浏览器打开

 禁用“Chrome 正受到自动测试软件的控制”提示

设置下载路径

禁用弹窗拦截

 禁用图片加载

禁用 JavaScript 

注意

引言      

          Options是selenium用来设定浏览器的一些属性和必要操作的工具。根据添加方式可以分为命令行参数,用户配置文件,扩展组件和实验性功能等。

        本文主要介绍命令行参数与实验性选项这两个Selenium在web自动化中最常用的Options设定。

说明

        在web自动化过程中命令行参数与实验性选项是最直接和灵活的一种方式,通过传递特定的字符串参数给浏览器,可以改变浏览器的启动行为。但是许多用户在使用时不知道去哪里查询这些参数。实际上,Selenium官方文档和各浏览器的官方文档都提供了详细的参数列表。以下是一些作者本人曾用到和查询过的参数。

        本文所有内容均基于Selenium官方文档和Chromium浏览器的官方文档。且所给内容适合配合selenium使用,需要注意的是,由于浏览器版本等问题,部分参数可能失效。

https://peter.sh/experiments/chromium-command-line-switches/https://peter.sh/experiments/chromium-command-line-switches/https://github.com/GoogleChrome/chrome-launcher/blob/main/docs/chrome-flags-for-tools.mdhttps://github.com/GoogleChrome/chrome-launcher/blob/main/docs/chrome-flags-for-tools.md


Add_argument()

作用:用于向浏览器启动时传递命令行参数

特点:直接修改浏览器的启动参数。

        参数是浏览器原生支持的,通常可以在浏览器的官方文档中找到。

添加方式

#selenium支持chrome edge firefox safari四种类型的浏览器
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
#其余三种类型的webdriver的Options导入
# from selenium.webdriver.chrome.options import Options
# from selenium.webdriver.firefox.options import Options
# from selenium.webdriver.safari.options import Options#向options添加命令行参数
options=Options()
options.add_argument('字符串参数')#四种类型的webdriver,options需要与其导入时的webdriver类型一致
#否则打开的webdriver为options所属
browser=webdriver.Edge((options=options)
# browser=webdriver.ChromiumEdge(options=options)
# browser=webdriver.Chrome(options=options)
# browser=webdriver.Firefox(options=options)
# browser=webdriver.Safari(options=options)

        这里需要注意的是,若你使用Edge的webdriver来进行自动化的话,那么webdriver使用ChromiumEdge与Edge以及Options使用edge.options都可以,因为Edge本身是基于chromium内核的。 

常用参数

--allow-external-pages 允许在 Web 测试期间访问外部页面。
--auto-accept-camera-and-microphone-capture 绕过提示用户提供拍摄摄像头和麦克风权限的对话框(自动接受)。在视频会议或其他涉及到调用摄像头和麦克风权限 Web 应用程序自动测试中有用。
--auto-accept-this-tab-capture此标志使 Chrome 自动接受/拒绝捕获当前标签页的请求。只应用于测试
--auto-grant-captured-surface-control-prompt跳过 Captured Surface Control 的权限提示
--auto-open-devtools-for-tabs自动打开当前Webdriver内每个网站标签页的开发者工具

--autoreplay-policy=no-replay

--autoreplay-policy=default

--autoreplay-policy=replayable-only

用于设置浏览器在遇到网络错误时的重试策略,即测试网络请求失败时的页面行为。

default:默认值。重试一次。

no-replay:禁用自动重试,遇到网络错误时直接失败。

replayable-only仅对可重试的请求(如 GET 请求)进行重试,而对非重试请求(如 POST 请求)则直接失败。

--bypass-installable-message-throttle-for-testing

绕过 PWA(Progressive Web App)安装提示的节流机制。

--disable-auto-reload 禁用错误页面的自动重新加载。
--disable-background-media-suspend 不要立即暂停后台选项卡中正在播放的媒体。
--disable-gpu禁用 GPU 硬件加速。如果未安装软件渲染器,则 GPU 进程不会启动。在无头模式下用到。
--disable-input-event-activation-protection

Chromium 浏览器有一个内置的保护机制,用于防止某些输入事件(如点击)被意外触发。例如:

防止页面在加载过程中意外触发点击事件。

防止广告或弹窗拦截用户的点击操作。

该命令行的作用是 禁用这种保护机制,允许输入事件(如点击)在任何情况下都能触发。

--disable-audio-output禁用音频输出。浏览器不会播放任何声音,即使网页中包含音频或视频内容
--disable-pdf-plugin禁用内置的 PDF 插件,使用外部程序打开 PDF。
--disable-virtual-keyboard禁用网页内的虚拟键盘。
--disable-volume-adjust-sound禁用音量调整提示音,调整音量时'嘟'的声音不再出现。
--disable-blink-features=AutomationControlled禁用自动化控制相关的 Blink 功能。以此来绕过反自动化检测,防止网站限制
--disable-blink-feature=PreferHtmlOverPlugins强制使用 HTML5 内容,避免依赖过时的插件。如果Flash。

--disable-cookies

禁用所有cookie。

--disable-third-party-cookie

禁用第三方 cookie。
--disable-translate禁用自动翻译。
--disable-infobars禁用信息栏(包括自动化提示栏)
--disable-geolocation禁用地理位置。
--disable-extentions禁用浏览器扩展。
--disable-popup-blocking禁用窗口弹出拦截功能。
--disable-logging禁用浏览器日志记录功能。
--deny-permission-promptswebdriver会自动拒绝所有权限请求,包括地理位置、摄像头、麦克风、通知等。
--enable-auto-reload当浏览器检测到页面内容发生变化(如文件修改)时,会自动刷新页面。
--enable-automation --enable-automation 参数通常与 excludeSwitches 一起使用,以隐藏自动化提示栏。
--enable-logging启用浏览器日志记录功能。

--enable-features=ParallelDownloading

启用文件并行下载功能,提升下载速度。

--enable-strict-mixed-content-checking

启用严格的混合内容检查,阻止不安全的 HTTP 资源加载,增强网页安全性。

--enable-features=IsolateOrigins

启用源隔离功能,进一步隔离不同源的网页内容,增强网页安全性和隐私保护。

--enable-site-per-process

启用站点隔离功能,每个站点运行在独立的进程中,增强网页安全性和稳定性。
--force-media-suspend强制暂停媒体播放。
--force-device-scale=1.5

强制设置设备的缩放比例为150%。

--force-dark-mode强制启用深色模式,网站需要支持深色模式才有用。
--guest访客模式,此时webdriver收藏夹不可用,且不保存浏览记录。
--headless开启无头模式

--ignore-ssl-errosr

忽略ssl错误

--ignore-certificate-errors

忽略证书错误
--mute-audio禁用所有音频,浏览器不会播放任何声音,即使网页中包含音频或视频内容。
--no-sandbox禁用沙箱模式,通常在无头模式下使用
--proxy-server添加代理
--start-maximizedwebdriver启动时窗口最大化
--start-fullscreenwebdriver启动后开启全屏模式(按下F11)
--user-agent伪装不同设备上的浏览器,绕过某些网站对特定浏览器或设备的访问限制。
--window-position=x轴横坐标,y轴横坐标 

设定打开的webdriver的窗口位置 

--window-size=height,width

设定打开的webdriver的窗口大小

说明:上表参数只需要按照字符串的格式加上引号之后直接复制粘贴到add_argument方法内,webdriver启动后便会带有相应的特性,如无响应可能是浏览器版本问题。


Add_experimental_option()

作用:用于设置浏览器的实验性选项或偏好设置(preferences)。

特点:通常用于修改 webdriver的 prefs 或 excludeswitches等实验性选项。

         这些选项不全是浏览器原生支持的,部分需要通过 Selenium 提供的接口来设置的。

添加方式

与add_argument导入方式一致,唯一区别在于使用的是add_experimental_option()方法,且使用方法较为灵活。

#selenium支持chrome edge firefox safari的四种类型的浏览器
from selenium import webdriver
from selenium.webdriver.edge.options import Options
#其余三种类型的webdriver的Options导入
# from selenium.webdriver.chrome.options import Options
# from selenium.webdriver.firefox.options import Options
# from selenium.webdriver.safari.options import Options
#向options添加命令行参数
options=Options()
options.add_experimental_option()#四种类型的webdriver,options需要与其导入时的webdriver类型一致
#否则打开的webdriver为options所属
browser=webdriver.Edge(options=options)
# browser=webdriver.ChromiumEdge(options=options)
# browser=webdriver.Chrome(options=options)
# browser=webdriver.Firefox(options=options)
# browser=webdriver.Safari(options=options)

常用方法

任务结束后仍然保持浏览器打开

options.add_experimental_option('detach',True)

        将 detach 参数设置为 true后, 只要不向driver发送quit命令, 就可以在任务结束后仍然保持浏览器打开。

 禁用“Chrome 正受到自动测试软件的控制”提示

options.add_experimental_option("excludeSwitches", ["enable-automation"])  # 禁用自动化提示
options.add_experimental_option("useAutomationExtension", False)  # 禁用自动化扩展

设置下载路径

prefs = {"download.default_directory": "/path/to/download",  # 设置下载路径"download.prompt_for_download": False,  # 禁用下载提示"download.directory_upgrade": True,  # 允许下载路径升级"profile.default_content_setting_values.automatic_downloads": True  #允许多文件下载"safebrowsing.enabled": True  # 启用安全浏览
}
options.add_experimental_option("prefs",prefs)

禁用弹窗拦截

prefs = {"profile.default_content_setting_values.popups": 1  # 允许弹窗
}
options.add_experimental_option("prefs",prefs)

 禁用图片加载

prefs = {"profile.managed_default_content_settings.images": 2  # 2 表示禁用图片加载
}
options.add_experimental_option("prefs",prefs)

禁用 JavaScript 

prefs = {"profile.managed_default_content_settings.javascript": 2  # 2 表示禁用 JavaScript
}
options.add_experimental_option("prefs",prefs)

远程连接已经打开的浏览器

options.add_experimental_option('debuggerAddress','IP地址')

注意

        当我们向webdriver中传入options时,应该保证导入的Options所属的webdriver与所使用的webdriver一致,否则打开的webdriver以Options所属为准。

比如:我们的webdriver为Edge,Options从chrome导入


from selenium import webdriver
from selenium.webdriver.chrome.options import Options#导入chrome浏览器的Options类
options=Options()
options.add_argument('--disable-blink-features=AutomationControlled')
options.add_argument('--disable-logging')
options.add_argument('--ignore-ssl-errosr')#忽略ssl错误
options.add_argument('--ignore-certificate-errors')#忽略证书错误
options.add_experimental_option('excludeSwitches', ['enable-logging'])#禁用日志
options.add_experimental_option('excludeSwitches',['enable-automation'])#隐藏自动化控制
options.add_experimental_option('detach',True)
browser=webdriver.Edge(options)#使用Edge webdriver
browser.get('https://bot.sannysoft.com/')

启动的是chrome的webdriver 

相关文章:

Web自动化之Selenium下Chrome与Edge的Webdriver常用Options参数

目录 引言 说明 Add_argument() 添加方式 常用参数 Add_experimental_option() 添加方式 常用方法 任务结束后仍然保持浏览器打开 禁用“Chrome 正受到自动测试软件的控制”提示 设置下载路径 禁用弹窗拦截 禁用图片加载 禁用 JavaScript 注意 引言 …...

数据安全_笔记系列05:数据合规与隐私保护(GDPR、CCPA、中国《数据安全法》)深度解析

数据安全_笔记系列05:数据合规与隐私保护(GDPR、CCPA、中国《数据安全法》)深度解析 在全球数据跨境流动和隐私保护强监管的背景下,企业需同时满足多法域合规要求。以下从 法规要点、核心差异、实施策略、跨境传输、典型案例 等维…...

AF3 DataPipeline类process_multiseq_fasta 方法解读

AlphaFold3 data_pipeline 模块DataPipeline类的 process_multiseq_fasta 方法用于处理多序列 FASTA 文件,生成 AlphaFold3 结构预测所需的特征,适用于多链复合物的预测。它结合了 Minkyung Baek 在 Twitter 上提出的“AlphaFold-Gap”策略,即通过在多链 MSA 中插入固定长度…...

中国的Cursor! 字节跳动推出Trae,开放Windows版(附资源),开发自己的网站,内置 GPT-4o 强大Al模型!

Trae是什么 Trae 是字节跳动推出的免费 AI IDE,通过 AI 技术提升开发效率。支持中文,集成了 Claude 3.5 和 GPT-4 等主流 AI 模型,完全免费使用。Trae 的主要功能包括 Builder 模式和 Chat 模式,其中 Builder 模式可帮助开发者从…...

图片爬取案例

修改前的代码 但是总显示“失败” 原因是 修改之后的代码 import requests import os from urllib.parse import unquote# 原始URL url https://cn.bing.com/images/search?viewdetailV2&ccidTnImuvQ0&id5AE65CE4BE05EE7A79A73EEFA37578E87AE19421&thidOIP.TnI…...

Go语言中的信号量:原理与实践指南

Go语言中的信号量:原理与实践指南 引言 在并发编程中,控制对共享资源的访问是一个经典问题。Go语言提供了丰富的并发原语(如sync.Mutex),但当我们需要灵活限制并发数量时,信号量(Semaphore&am…...

Qt如何将数据传入labview,Qt又如何从labview中读取数据?

Qt如何将数据传入labview,Qt又如何从labview中读取数据? Qt如何将数据传入labviewQt如何从labview中读取数据 Qt如何将数据传入labview Qt如何从labview中读取数据...

vue3学习2

ts定义接口: 引入的时候要加type: 调用: ts创建自定义type类型,引入的时候也要加type: reactive可以直接传泛型: 加?声明不强制: defineProps接收父组件传递的props,其中defineProp…...

spring中手写注解开发(创建对象篇)

说明: 在spring底层中并不是我写的如此,这篇只是我用我自己的方式实现了使用注解组件扫描并且 创建对象,方法并不是很难,可以看一看,欢迎大佬评论 第一步: 我们需要自己写一个注解,我用的是idea…...

Android OpenGLES2.0开发(十一):渲染YUV

人生如逆旅,我亦是行人 Android OpenGLES开发:EGL环境搭建Android OpenGLES2.0开发(一):艰难的开始Android OpenGLES2.0开发(二):环境搭建Android OpenGLES2.0开发(三&am…...

在linux中利用conda安装blast

在 Linux 中使用 conda 安装 BLAST 非常简单。conda 是一个流行的包管理工具,可以轻松安装和管理生物信息学工具,包括 BLAST。以下是具体步骤: 1. 确保已安装 Conda 如果你还没有安装 conda,可以参考以下步骤安装 Miniconda&…...

三、多项式环

文章目录 一、多项式环的定义二、多项式环的性质1. 多项式加法2. 多项式乘法3. 满足的运算规律4. 次数5. 单位元 三、剩余多项式环(商多项式环)四、有限多项式环五、多项式环的性质与特性1. 子环与理想2. 不可约性和素性3. 有限生成性 一、多项式环的定义…...

python unzip file

要在 Python 中解压文件并显示进度,我们需要在解压过程中跟踪文件的提取进度。由于 zipfile 模块本身不直接支持进度显示,我们可以通过手动计算并使用 tqdm 库来显示进度条。 安装 tqdm 首先,确保你已经安装了 tqdm 库,用于显示…...

MySQL-增删改查

一、Create(创建) 📖 语法: INSERT INTO table_name(value_list); 当我们使用表的时候,就可以使用这个语法来向表中插入元素~ 我们这边创建一个用于示范的表(Student)~ create table student( id int, name varchar(20), chinese int, math…...

LeetCode 热题100 15. 三数之和

LeetCode 热题100 | 15. 三数之和 大家好,今天我们来解决一道经典的算法题——三数之和。这道题在 LeetCode 上被标记为中等难度,要求我们从一个整数数组中找到所有不重复的三元组,使得三元组的和为 0。下面我将详细讲解解题思路&#xff0c…...

网络空间安全(1)web应用程序的发展历程

前言 Web应用程序的发展历程是一部技术创新与社会变革交织的长卷,从简单的文档共享系统到如今复杂、交互式、数据驱动的平台,经历了多个重要阶段。 一、起源与初期发展(1989-1995年) Web的诞生: 1989年,欧洲…...

ABAQUS功能梯度材料FGM模型

功能梯度材料(FGM)作为一种新型复合材料,通过材料内部成分或微观结构的梯度变化,优化特定性能适应复杂环境,被广泛应用于高温防护、结构优化、生物医学、光电设备等领域。本案例介绍在ABAQUS内建立功能梯度材料模型。 …...

自适应增强技术

1. 传统图像处理中的自适应增强&#xff08;如CLAHE&#xff09; 难度&#xff1a;⭐容易 实现方式&#xff1a;调用成熟的库&#xff08;如OpenCV&#xff09;函数即可完成。 示例代码&#xff08;CLAHE增强&#xff09;&#xff1a; <PYTHON> import cv2# 输入灰度或彩…...

虚拟项目:一个好用的工具平台

在当今数字化的时代&#xff0c;虚拟项目如雨后春笋般涌现&#xff0c;为人们提供了诸多便捷且充满机遇的选择。以下将为大家详细介绍几种颇具特色的虚拟项目&#xff0c;包括书签、资源站、题库、虚拟商城、专栏、证件照以及分站搭建等&#xff0c;一起来了解它们各自的独特之…...

MySQL 和 Elasticsearch 之间的数据同步

MySQL 和 Elasticsearch 之间的数据同步是常见的需求&#xff0c;通常用于将结构化数据从关系型数据库同步到 Elasticsearch 以实现高效的全文搜索、聚合分析和实时查询。以下是几种常用的同步方案及其实现方法&#xff1a; 1. 应用层双写&#xff08;双写模式&#xff09; 原…...

ZIO性能优化终极指南:让你的应用快10倍的秘诀

ZIO性能优化终极指南&#xff1a;让你的应用快10倍的秘诀 【免费下载链接】zio ZIO — A type-safe, composable library for async and concurrent programming in Scala 项目地址: https://gitcode.com/gh_mirrors/zi/zio ZIO是一个类型安全、可组合的Scala异步并发编…...

科哥cv_unet抠图镜像:本地部署保护隐私,批量处理提升效率

科哥cv_unet抠图镜像&#xff1a;本地部署保护隐私&#xff0c;批量处理提升效率 你是不是经常需要处理图片&#xff1f;比如给产品换个背景、做证件照、或者批量处理一堆社交媒体图片。每次打开PS&#xff0c;用魔棒工具一点点抠&#xff0c;不仅费时费力&#xff0c;效果还不…...

2026年外墙保温防脱落新技术,让建筑更安全稳固

随着城市化进程的加快&#xff0c;高层建筑越来越多&#xff0c;外墙保温材料的安全性问题也日益凸显。近年来&#xff0c;外墙保温层脱落事件频发&#xff0c;不仅影响了建筑物的美观&#xff0c;还给居民的生活带来了安全隐患。为了应对这一问题&#xff0c;山东邦元新型建材…...

GLM-4-9B-Chat-1M效果展示:1M上下文下多文档交叉引用关系自动构建演示

GLM-4-9B-Chat-1M效果展示&#xff1a;1M上下文下多文档交叉引用关系自动构建演示 想象一下&#xff0c;你手头有十几份研究报告、几十页的合同文档&#xff0c;或者一个包含数百个文件的代码库。你想快速理清这些材料之间的关联&#xff1a;哪份报告引用了另一份的数据&#…...

破局起点:35岁危机的本质解构

在软件测试领域&#xff0c;35岁危机并非年龄的诅咒&#xff0c;而是能力模型与行业需求的结构性错位。当自动化工具覆盖80%基础用例、AI生成脚本效率超越人工时&#xff0c;危机核心显现为三重矛盾&#xff1a;技术断层危机&#xff1a;手工测试经验与云原生/AI测试需求脱节&a…...

避坑指南:Vue3 + Maotu流程图编辑器集成时,Token失效、样式丢失等5个常见问题怎么解决?

Vue3与Maotu流程图编辑器深度集成&#xff1a;5大核心问题解决方案与实战优化 在工业物联网和复杂业务系统开发中&#xff0c;可视化流程编辑器的集成质量直接影响开发效率和系统稳定性。Maotu作为国内领先的流程图编辑组件&#xff0c;与Vue3的深度整合为开发者提供了强大的可…...

Linux命令:suspend

suspend 命令 基本介绍 suspend 命令用于将系统挂起&#xff08;睡眠状态&#xff09;&#xff0c;是 Linux 系统中常用的电源管理命令。它会将系统状态保存到内存中&#xff0c;然后关闭大部分硬件设备以节省电力&#xff0c;当系统被唤醒时&#xff0c;会从内存中恢复之前的状…...

Flink CDC 3.0.0 同步Oracle 19c数据,我踩过的那些坑(时区、字符集、权限)

Flink CDC 3.0.0同步Oracle 19c实战避坑指南 最近在金融级数据中台项目中实施Flink CDC 3.0.0对接Oracle 19c时&#xff0c;遇到了不少官方文档未提及的"深坑"。这些坑轻则导致数据不一致&#xff0c;重则引发生产事故。本文将分享五个典型问题的完整解决方案&#x…...

AIAgent情感陪伴已进入“临界渗透期”:工信部2026Q1备案数据显示,全国仅17家机构通过情感意图识别三级认证

第一章&#xff1a;AIAgent情感陪伴已进入“临界渗透期”&#xff1a;政策拐点与产业共振 2026奇点智能技术大会(https://ml-summit.org) 当《人工智能伦理治理指导意见&#xff08;2025年修订版&#xff09;》首次将“情感交互类AI服务”单列监管条目&#xff0c;当国家卫健…...

5分钟告别英文界面困扰:FigmaCN为中文设计师打造的智能汉化解决方案

5分钟告别英文界面困扰&#xff1a;FigmaCN为中文设计师打造的智能汉化解决方案 【免费下载链接】figmaCN 中文 Figma 插件&#xff0c;设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 你是否曾因Figma的英文界面而分心&#xff0c;无法专注于…...