Python Selenium涉及到的ChromeOptions配置整理

Selenium是一个支持多平台+多浏览器+多版本的浏览器自动化测试框。

Selenium在启动浏览器时可以通过desired_capbilities参数来指定需要启动的平台、浏览器、版本及浏览器启动参数。

ChromeOptions是chromedriver支持的浏览器启动选项。

这是我用到的一些配置

python 复制代码
    options = webdriver.ChromeOptions()
    options.add_argument('--headless')
    options.add_argument("--remote-debugging-port=9222")
    options.add_argument("--no-sandbox")
    options.add_argument("--disable-setuid-sandbox")
    options.add_argument("--disable-dev-shm-using")
    options.add_argument("--disable-extensions")
    options.add_argument("--disable-gpu")
    options.add_argument("--start-maximized")
    options.add_argument("--disable-infobars")
    driver = webdriver.Chrome(options=options)
    driver.get(url)

常用配置

python 复制代码
# 无界面模式
options.add_argument('--headless')

# 指定用户客户端-模拟手机浏览
options.add_argument('user-agent="MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"')

# 禁用图片加载
options.add_argument('--blink-settings=imagesEnabled=false')

# 隐身模式
options.add_argument('--incognito')

# 自动打开开发者工具
options.add_argument("--auto-open-devtools-for-tabs")

# 设置窗口尺寸,注意宽高之间使用逗号而不是x
options.add_argument('--window-size=300,600')

# 设置窗口启动位置(左上角坐标)
options.add_argument('--window-position=120,0')

# 禁用gpu渲染
options.add_argument('--disable-gpu')

# 全屏启动
options.add_argument('--start-fullscreen')

# 全屏启动,无地址栏
options.add_argument('--kiosk') 

 # 启动时,不激活(前置)窗口
options.add_argument('--no-startup-window') 
...

下面是官方提供的全部配置

python 复制代码
全部:(下面的没有进行翻译,仔细看下应该都看得懂. ~ ~)

--disable-hang-monitor

Suppresses hang monitor dialogs in renderer processes.

--disable-metrics

Completely disables UMA metrics system.

--disable-metrics-reporting

Disables only the sending of metrics reports. In contrast to kDisableMetrics, this executes all the code that a normal client would use for reporting, except the report is dropped rather than sent to the server. This is useful for finding issues in the metrics code during UI and performance tests.

--assert-test

Causes the browser process to throw an assertion on startup.

--renderer-assert-test

Causes the renderer process to throw an assertion on launch.

--crash-test

Performs a crash test when the browser is starte.

--renderer-crash-test

Causes the renderer process to crash on launch.

--renderer-startup-dialog

Use this argument when you want to see the child processes as soon as Chrome start.

--plugin-startup-dialog

Causes the plugin process to display a dialog on launch.

--testshell-startup-dialog

Causes the test shell process to display a dialog on launch.

--plugin-launcher

Specifies a command that should be used to launch the plugin process. Useful

for running the plugin process through purify or quantify. Ex:

--plugin-launcher="path\to\purify /Run=yes.

--plugin-launche.

--channel

The value of this switch tells the child process which

IPC channel the browser expects to use to communicate with it.

--testing-channel

The value of this switch tells the app to listen for and broadcast

testing-related messages on IPC channel with the given ID.

--homepage

The value of this switch specifies which page will be displayed

in newly-opened tabs. We need this for testing purposes so

that the UI tests don't depend on what comes up for http://google.com.

--start-renderers-manually

When this switch is present, the browser will throw up a dialog box

asking the user to start a renderer process independently rather

than launching the renderer itself. (This is useful for debugging..

--renderer

Causes the process to run as renderer instead of as browser.

--renderer-path

Path to the executable to run for the renderer subproces.

--plugin

Causes the process to run as plugin hos.

--single-process

Runs the renderer and plugins in the same process as the browse.

--process-per-tab

Runs each set of script-connected tabs (i.e., a BrowsingInstance) in its own

renderer process. We default to using a renderer process for each

site instance (i.e., group of pages from the same registered domain with

script connections to each other).

--process-per-site

Runs a single process for each site (i.e., group of pages from the same

registered domain) the user visits. We default to using a renderer process

for each site instance (i.e., group of pages from the same registered

domain with script connections to each other).

--in-process-plugins

Runs plugins inside the renderer proces.

--no-sandbox

Runs the renderer outside the sandbox.

--safe-plugins

Runs the plugin processes inside the sandbox.

--trusted-plugins

Excludes these plugins from the plugin sandbox.

This is a comma separated list of plugin dlls name and activex clsid.

--test-sandbox

Runs the security test for the sandbox.

--user-data-dir

Specifies the user data directory, which is where the browser will look

for all of its state.

--app

Specifies that the associated value should be launched in "application" mode.

--upload-file

Specifies the file that should be uploaded to the provided application. This

switch is expected to be used with --app option.

--dom-automation

Specifies if the dom_automation_controller_ needs to be bound in the

renderer. This binding happens on per-frame basis and hence can potentially

be a performance bottleneck. One should only enable it when automating

dom based tests.

--plugin-path

Tells the plugin process the path of the plugin to loa.

--js-flags

Specifies the flags passed to JS engin.

--geoid

The GeoID we should use. This is normally obtained from the operating system

during first run and cached in the preferences afterwards. This is a numeric

value; see http://msdn.microsoft.com/en-us/library/ms776390.aspx .

--lang

The language file that we want to try to open. Of the form

language[-country] where language is the 2 letter code from ISO-639.

--debug-children

Will add kDebugOnStart to every child processes. If a value is passed, it

will be used as a filter to determine if the child process should have the

kDebugOnStart flag passed on or not.

--debug-on-start

Causes the process to start the JIT debugger on itself (mainly used by --debug-children.

--wait-for-debugger-children

Will add kWaitForDebugger to every child processes. If a value is passed, it

will be used as a filter to determine if the child process should have the

kWaitForDebugger flag passed on or not.

--wait-for-debugger

Waits for a debugger for 60 second.

--log-filter-prefix

Will filter log messages to show only the messages that are prefixed

with the specified valu.

--enable-logging

Force logging to be enabled. Logging is disabled by default in release

builds.

--dump-histograms-on-exit

Dump any accumualted histograms to the log when browser terminates (requires

logging to be enabled to really do anything). Used by developers and test

scripts.

--disable-logging

Force logging to be disabled. Logging is enabled by default in debug

builds.

--log-level

Sets the minimum log level. Valid values are from 0 to 3:

INFO = 0, WARNING = 1, LOG_ERROR = 2, LOG_FATAL = 3.

--remote-shell-port

Enable remote debug / automation shell on the specified por.

--uninstall

Runs un-installation steps that were done by chrome first-run.

--omnibox-popup-count

Number of entries to show in the omnibox popup.

--uninstallomnibox-popup-count

Removes the previous set suggestion coun.

--automation-channel

The value of this switch tells the app to listen for and broadcast

automation-related messages on IPC channel with the given ID.

--restore-last-session

Indicates the last session should be restored on startup. This overrides

the preferences value and is primarily intended for testing.

--record-mode

--playback-mode

Chrome supports a playback and record mode. Record mode saves *everything*

to the cache. Playback mode reads data exclusively from the cache. This

allows us to record a session into the cache and then replay it at will.

--no-events

Don't record/playback events when using record & playback.

--hide-icons

--show-icons

Make Windows happy by allowing it to show "Enable access to this program"

checkbox in Add/Remove Programs->Set Program Access and Defaults. This

only shows an error box because the only way to hide Chrome is by

uninstalling it.

--make-default-browser

Make Chrome default browse.

--proxy-server

Use a specified proxy server, overrides system settings. This switch only

affects HTTP and HTTPS requests.

--dns-log-details

--dns-prefetch-disable

Chrome will support prefetching of DNS information. Until this becomes

the default, we'll provide a command line switch.

--debug-print

Enables support to debug printing subsystem.

--allow-all-activex

Allow initialization of all activex controls. This is only to help website

developers test their controls to see if they are compatible in Chrome.

Note there's a duplicate value in activex_shared.cc (to avoid

dependency on chrome module). Please change both locations at the same time.

--disable-dev-tools

Browser flag to disable the web inspector for all renderers.

--always-enable-dev-tools

Enable web inspector for all windows, even if they're part of the browser.

Allows us to use our dev tools to debug browser windows itself.

--memory-model

Configure Chrome's memory model.

Does chrome really need multiple memory models? No. But we get a lot

of concerns from individuals about how the changes work on *their*

system, and we need to be able to experiment with a few choices.

--tab-count-to-load-on-session-restore

Used to set the value of SessionRestore::num_tabs_to_load_. See session_restore.h for details.

const wchar_t kTabCountToLoadOnSessionRestore[] .

--memory-profile

Enable dynamic loading of the Memory Profiler DLL, which will trace

all memory allocations during the run.

--enable-file-cookies

By default, cookies are not allowed on file://. They are needed in for

testing, for example page cycler and layout tests. See bug 1157243.

--start-maximized

Start the browser maximized, regardless of any previous settings.

TODO(pjohnson): Remove this once bug 1137420 is fixed. We are using this

as a workaround for not being able to use moveTo and resizeTo on a

top-level window.

--enable-watchdog

Spawn threads to watch for excessive delays in specified message loops.

User should set breakpoints on Alarm() to examine problematic thread.

Usage: -enable-watchdog=[ui][io]

Order of the listed sub-arguments does not matter.

--first-run

Display the First Run experience when the browser is started, regardless of

whether or not it's actually the first run.

--message-loop-strategy

--message-loop-histogrammer

Enable histograming of tasks served by MessageLoop. See about:histograms/Loop

for results, which show frequency of messages on each thread, including APC

count, object signalling count, etc.

--import

Perform importing from another browser. The value associated with this

setting encodes the target browser and what items to import.

--silent-dump-on-dcheck

Change the DCHECKS to dump memory and continue instead of crashing.

This is valid only in Release mode when --enable-dcheck is specified.

--disable-prompt-on-repost

Normally when the user attempts to navigate to a page that was the result of

a post we prompt to make sure they want to. This switch may be used to

disable that check. This switch is used during automated testing.

--disable-popup-blocking

Disable pop-up blocking.

--disable-javascript

Don't execute JavaScript (browser JS like the new tab page still runs).

--disable-java

Prevent Java from running.

--disable-plugins

Prevent plugins from running.

--disable-images

Prevent images from loading.

--use-lf-heap

Use the low fragmentation heap for the CRT.

--gears-plugin-path

Debug only switch to specify which gears plugin dll to load.

--gears-in-renderer

Switch to load Gears in the renderer process.

--enable-p13n

--javascript-debugger-path

Allow loading of the javascript debugger UI from the filesystem.

--new-http

Enable new HTTP stack.

全部
相关推荐
hi星尘4 小时前
深度解析:基于Python的微信小程序自动化操作实现
python·微信小程序·自动化
Doker 多克4 小时前
Django 缓存框架
python·缓存·django
miracletiger6 小时前
uv 新的包管理工具总结
linux·人工智能·python
我不会编程5557 小时前
Python Cookbook-6.10 保留对被绑定方法的引用且支持垃圾回收
开发语言·python
ʚɞ 短腿欧尼7 小时前
关系数据的可视化
python·pycharm·可视化·数据可视化·图表
PXM的算法星球9 小时前
【软件工程】面向对象编程(OOP)概念详解
java·python·软件工程
Humbunklung10 小时前
PySide6 GUI 学习笔记——常用类及控件使用方法(常用类矩阵QRectF)
笔记·python·学习·pyqt
蹦蹦跳跳真可爱58910 小时前
Python----深度学习(基于DNN的吃鸡预测)
python·深度学习·dnn
JJ1M811 小时前
Git技巧:Git Hook,自动触发,含实战分享
git·python·自动化
拓端研究室TRL11 小时前
PyMC+AI提示词贝叶斯项目反应IRT理论Rasch分析篮球比赛官方数据:球员能力与位置层级结构研究
大数据·人工智能·python·算法·机器学习