自动化进阶之路,selenium中webdriver的ChromeOptions参数说明

ChiangBar 2024-07-02 10:03:04 阅读 81

可使用ChromeOptions()实现谷歌浏览器一系列功能:

from selenium.webdriver.chrome.options import Options

option = Options()

#在打开浏览器之前,去掉自动化标识

option.add_experimental_option('excludeSwitches', ['enable-automation'])

常见不需要的浏览器功能:

–disable-client-side-phishing-detection:禁用客户端网络钓鱼检测

–disable-component-extensions-with-background-pages:禁用一些不受影响的内置扩展–disable-extensions

–disable-default-apps:禁用默认应用程序的安装

–disable-extensions:禁用所有 chrome 扩展

–disable-features=InterestFeedContentSuggestions:禁用 NTP 上的发现源

–disable-features=Translate:禁用 Chrome 翻译,包括手动选项和检测到不同语言的页面时弹出的提示。

–hide-scrollbars:在屏幕截图中隐藏滚动条。

–mute-audio:将所有音频静音

–no-default-browser-check:禁用默认浏览器检查,不提示进行这样的设置

–no-first-run:跳过首次运行向导

任务节流:

–disable-background-timer-throttling:禁用在后台页面/选项卡中限制计时器

–disable-backgrounding-occluded-windows:通常,如果周围的窗口被另一个窗口遮挡(也称为视觉上覆盖),Chrome 会将“前景”选项卡视为背景选项卡。该标志禁用该功能。

–disable-features=CalculateNativeWinOcclusion:禁用以下功能:将来将使用 Windows 上的计算窗口遮挡来限制并可能卸载遮挡窗口中的前景选项卡。

–disable-hang-monitor:禁止渲染器进程中挂起监视器对话框。此标志可能允许页面上的缓慢卸载处理程序以防止选项卡关闭。

–disable-ipc-flooding-protection:一些 javascript 函数可用于通过 IPC 淹没浏览器进程。默认情况下,保护处于打开状态,将发送的 IPC 数量限制为每帧每秒 10 个。该标志禁用它。

–disable-renderer-backgrounding:这会禁止非前台选项卡获得较低的进程优先级。这不会(就其本身而言)影响计时器或绘画行为。

网络平台行为:

–aggressive-cache-discard:缓存丢弃

–allow-running-insecure-content:允许运行不安全内容

–disable-back-forward-cache:禁用 BackForwardCache 功能。

–disable-features=AcceptCHFrame:禁用接受 h2/h3 ACCEPT_CH客户端提示帧。

–disable-features=AutoExpandDetailsElement:于2022 年 9 月删除。

–disable-features=AvoidUnnecessaryBeforeUnloadCheckSync:如果启用,此功能会导致浏览器进程仅在知道已注册此类处理程序时才要求渲染器进程运行 beforeunload 处理程序。对于kAvoidUnnecessaryBeforeUnloadCheckSync,内容不会报告存在 beforeunload 处理程序。其后果是,通常会在继续之前检查 beforeunload 处理程序的导航不会,并且导航将同步继续。

–disable-features=BackForwardCache:禁用bfcache。

–disable-features=HeavyAdPrivacyMitigations

–disable-features=IsolateOrigins

–disable-features=LazyFrameLoading

–disable-features=ScriptStreaming:V8脚本流

–enable-precise-memory-info:使返回到 window.performance.memory 的值在共享工作线程中更加细化和更新。如果没有此标志,内存信息仍然可用,但它会被分桶并更新得不那么频繁。该标志也适用于工人。

–js-flags=–random-seed=1157259157:用固定种子初始化V8的RNG。

–use-fake-device-for-media-stream:使用假媒体流设备来代替摄像头和麦克风

–use-fake-ui-for-media-stream:通过选择媒体流的默认设备(例如WebRTC)来绕过媒体流信息栏。与 --use-fake-device-for-media-stream 一起使用。

–use-file-for-fake-video-capture=:使用文件进行虚假视频捕获(.y4m 或 .mjpeg) 需要–use-fake-device-for-media-stream

交互抑制:

–autoplay-policy=…user-gesture-required:不自动播放视频的值。no-user-gesture-required始终自动播放视频的值。

–deny-permission-prompts:通过自动拒绝来抑制所有权限提示。

–disable-external-intent-requests:禁止在外部应用程序中打开链接

–disable-features=GlobalMediaControls:隐藏可打开用于控制媒体会话的对话框的工具栏按钮。

–disable-features=ImprovedCookieControls:禁用改进的 UI,以便在隐身模式下阻止第三方 cookie。

–disable-notifications:禁用 Web 通知和推送 API。

–disable-popup-blocking:禁用弹出窗口阻止。–block-new-web-contents是这个的严格版本。

–disable-prompt-on-repost:重新加载来自 POST 的页面通常会提示用户。

–noerrdialogs:抑制所有存在的错误对话框。

自动化设置:

–enable-automation:禁用一些被认为不适合自动化的功能。(原始设计文档,虽然在这里重命名)codesearch。请注意,某些项目选择避免使用此标志:web-platform-tests/wpt/#6348、

设置window.navigator.webdriver为true所有 JS 上下文中。使用 --headless,–remote-debugging-pipe和–remote-debugging-port=0(是的,特别是0 )时也会设置此值。

禁用有关运行开发/解压扩展的气泡通知(来源)

禁用密码保存 UI(涵盖已失效 标志的用例–disable-save-password-bubble)

禁用信息栏动画(来源)

禁用网络错误时的自动重新加载(来源)

启用 CDP 方法Browser.getBrowserCommandLine。

避免显示这 4 个信息栏:ShowBadFlagsPrompt、GoogleApiKeysInfoBarDelegate、ObsoleteSystemInfoBarDelegate、LacrosButterBar

添加此信息栏:

在这里插入图片描述

已知会对屏幕截图产生不利影响。

–test-type:基本上是 2014 年版本–enable-automation。

它避免在 Mac 上的 ~/Applications 中创建应用程序存根。

它使退出代码稍微更正确

Windows 导航跳转列表未更新

不启动一些 chrome StartPageService

禁用初始化 chromecast 服务

“在测试期间不会启用带有后台页面的组件扩展,因为它们会生成大量可能干扰的后台行为。”

退出浏览器时,它会禁用可能停止退出过程的其他检查。(例如未保存的表单修改或未处理的个人资料通知…)

remote-debugging-pipe:比通过 websocket 使用协议更安全

–remote-debugging-port=…:值为 0 时,Chrome 将自动选择可用端口并设置navigator.webdriver为true。

–silent-debugger-extension-api:当 Chrome 扩展程序使用页面附加到页面时,不显示信息栏chrome.debugger。需要附加到扩展背景页面。

常规:

–enable-logging=stderr:日志记录行为稍微更适合服务器类型的进程。

–log-level=0: 0 表示 INFO 及更高。2是最冗长的。专业提示:使用–enable-logging=stderr --v=2后,您可能会发现您可能想要禁用的其他活动组件。

–user-data-dir=…:浏览器存储用户配置文件的目录。

后台联网:

–disable-background-networking:禁用各种后台网络服务,包括扩展更新、安全浏览服务、升级检测器、翻译、UMA

–disable-breakpad:禁用故障转储收集(Chromium 中已禁用报告)

–disable-component-update:不要更新 chrome://components/ 中列出的浏览器“组件”

–disable-domain-reliability:禁用域可靠性监控,该监控会跟踪浏览器是否难以联系 Google 拥有的网站并向 Google 上传报告。

–disable-features=AutofillServerCommunication:禁用(主要用于密封测试)自动填充服务器通信。自动填充服务器的 URL 可以通过 autofill-server-url 参数进一步控制。给定的 URL 应指定完整的自动填充服务器 API URL,直至“查询”和“上传”资源的父“目录”。

–disable-features=CertificateTransparencyComponentUpdater

–disable-sync:禁用同步到 Google 帐户

–enable-crash-reporter-for-testing:用于在调试环境中打开 Breakpad 崩溃报告,其中崩溃报告通常被编译但被禁用。

–metrics-recording-only:禁用向 UMA 报告,但允许收集

–disable-features=OptimizationHints:禁用Chrome优化指南及其服务API的网络

–disable-features=MediaRouter:禁用Chrome Media Router,它会创建一些后台网络活动来发现可投射目标。

–no-pings:不发送超链接审核 ping

渲染和 GPU:

–allow-pre-commit-input:允许在提交帧之前处理输入。被无头使用。

–deterministic-mode:实验性元标志。这设置了以下缩进标志,这些标志将浏览器置于渲染(边框半径等)是确定性的模式,并且应通过 DevTools 协议发出开始帧。

–run-all-compositor-stages-before-draw

–disable-new-content-rendering-timeout

–enable-begin-frame-control

–disable-threaded-animation

–disable-threaded-scrolling

–disable-checker-imaging

–disable-image-animation-resync

–disable-features=PaintHolding:不要推迟绘制提交(通常用于避免无样式内容的闪烁)

–disable-partial-raster: 禁用此功能可以提高图像渲染的准确性和质量,但可能会增加处理时间和资源消耗。

–disable-skia-runtime-opts:不要在 Skia 中使用运行时检测的高端 CPU 优化。

–in-process-gpu:通过将 GPU 进程移至浏览器进程线程来节省一些内存

–use-gl=“swiftshader”:选择 GPU 进程应使用哪种 GL 实现。选项有:desktop:用户安装的任何桌面 OpenGL(Linux 和 Mac 默认)。egl:用户安装的任何 EGL / GLES2(Windows 默认 - 实际上是 ANGLE)。swiftshader:SwiftShader 软件渲染器。

窗口和屏幕管理:

–block-new-web-contents:所有弹出窗口和对 window.open 的调用都会失败。

–force-color-profile=srgb:强制将所有显示器视为具有指定的颜色配置文件。

–new-window:在新浏览器窗口中启动 URL。

–window-position=0,0:指定初始窗口位置:–window-position=x,y

–window-size=1600,1024:设置初始窗口大小。以字符串形式提供,格式为“800,600”。

流程管理:

–disable-features=DestroyProfileOnBrowserClose:禁用以下功能:在最后一个浏览器窗口关闭时(而不是浏览器退出时)销毁配置文件。

–disable-features=site-per-process:禁用 OOPIF。

–no-service-autorun:禁止服务进程将自身添加为自动运行进程。这不会删除现有的自动运行注册,它只是阻止服务注册新的自动运行注册。

–process-per-tab:没有做任何事情。使用 --single-process 代替。

–single-process:在与浏览器相同的进程中运行渲染器和插件。

无头模式:

–headless:以无头模式运行,即没有 UI 或显示服务器依赖项。

–headless=new:新的原生无头模式。(之前,–headless=chrome)

–no-sandbox:有时与 headless 一起使用,但不推荐。

–disable-dev-shm-usage:常用于Lambda、Cloud Functions场景。(

–disable-gpu:经常与 一起使用–headless,但从 2021 年开始,不再需要。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。