Skip to content

Commit 36f229b

Browse files
authored
Merge pull request #3165 from seleniumbase/options-for-disabling-cookies
Add option for disabling cookies
2 parents 5c31bbf + 94b0358 commit 36f229b

13 files changed

+100
-15
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -681,6 +681,7 @@ pytest test_coffee_cart.py --trace
681681
--rec-behave # (Same as Recorder Mode, but also generates behave-gherkin.)
682682
--rec-sleep # (If the Recorder is enabled, also records self.sleep calls.)
683683
--rec-print # (If the Recorder is enabled, prints output after tests end.)
684+
--disable-cookies # (Disable Cookies on websites. Pages might break!)
684685
--disable-js # (Disable JavaScript on websites. Pages might break!)
685686
--disable-csp # (Disable the Content Security Policy of websites.)
686687
--disable-ws # (Disable Web Security on Chromium-based browsers.)

examples/raw_parameter_script.py

+14-7
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,23 @@
11
""" The main purpose of this file is to demonstrate running SeleniumBase
22
scripts without the use of Pytest by calling the script directly
3-
with Python or from a Python interactive interpreter. Based on
4-
whether relative imports work or don't, the script can autodetect
5-
how this file was run. With pure Python, it will initialize
6-
all the variables that would've been automatically initialized
7-
by the Pytest plugin. The setUp() and tearDown() methods are also
8-
now called from the script itself.
3+
with Python or from a Python interactive interpreter.
4+
Based on whether relative imports work or don't work, this script
5+
can autodetect how this file was run. With pure Python, it
6+
initializes all the variables that would've been automatically
7+
initialized by the Pytest plugin. The setUp() and tearDown() methods
8+
are also now called from the script itself.
9+
10+
(Note: The SB() and Driver() formats make this example obsolete.)
911
1012
One big advantage to running tests with Pytest is that most of this
1113
is done for you automatically, with the option to update any of the
1214
parameters through command-line parsing. Pytest also provides you
1315
with other plugins, such as ones for generating test reports,
1416
handling multithreading, and parametrized tests. Depending on your
1517
specific needs, you may need to call SeleniumBase commands without
16-
using Pytest, and this example shows you how.
18+
using Pytest, and this example shows you one way of doing that.
1719
"""
20+
1821
pure_python = False
1922
try:
2023
# Running with Pytest / (Finds test methods to run using autodiscovery)
@@ -33,9 +36,11 @@
3336
sb.browser = "chrome"
3437
sb.is_behave = False
3538
sb.headless = False
39+
sb.headless1 = False
3640
sb.headless2 = False
3741
sb.headed = False
3842
sb.xvfb = False
43+
sb.xvfb_metrics = None
3944
sb.start_page = None
4045
sb.locale_code = None
4146
sb.protocol = "http"
@@ -79,9 +84,11 @@
7984
sb.esc_end = False
8085
sb.use_wire = False
8186
sb.enable_3d_apis = False
87+
sb.window_position = None
8288
sb.window_size = None
8389
sb.maximize_option = False
8490
sb.visual_baseline = False
91+
sb.disable_cookies = False
8592
sb.disable_features = None
8693
sb._disable_beforeunload = False
8794
sb.save_screenshot_after_test = False

help_docs/customizing_test_runs.md

+1
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@ pytest my_first_test.py --settings-file=custom_settings.py
172172
--rec-behave # (Same as Recorder Mode, but also generates behave-gherkin.)
173173
--rec-sleep # (If the Recorder is enabled, also records self.sleep calls.)
174174
--rec-print # (If the Recorder is enabled, prints output after tests end.)
175+
--disable-cookies # (Disable Cookies on websites. Pages might break!)
175176
--disable-js # (Disable JavaScript on websites. Pages might break!)
176177
--disable-csp # (Disable the Content Security Policy of websites.)
177178
--disable-ws # (Disable Web Security on Chromium-based browsers.)

help_docs/method_summary.md

+2
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,7 @@ self.get_new_driver(
286286
cap_file=None,
287287
cap_string=None,
288288
recorder_ext=None,
289+
disable_cookies=None,
289290
disable_js=None,
290291
disable_csp=None,
291292
enable_ws=None,
@@ -297,6 +298,7 @@ self.get_new_driver(
297298
log_cdp_events=None,
298299
no_sandbox=None,
299300
disable_gpu=None,
301+
headless1=None,
300302
headless2=None,
301303
incognito=None,
302304
guest_mode=None,

mkdocs_build/requirements.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# Minimum Python version: 3.8 (for generating docs only)
33

44
regex>=2024.9.11
5-
pymdown-extensions>=10.10.1
5+
pymdown-extensions>=10.10.2
66
pipdeptree>=2.23.4
77
python-dateutil>=2.8.2
88
Markdown==3.7
@@ -20,7 +20,7 @@ lxml==5.3.0
2020
pyquery==2.0.1
2121
readtime==3.0.0
2222
mkdocs==1.6.1
23-
mkdocs-material==9.5.37
23+
mkdocs-material==9.5.38
2424
mkdocs-exclude-search==0.6.6
2525
mkdocs-simple-hooks==0.1.5
2626
mkdocs-material-extensions==1.3.1

seleniumbase/__version__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
# seleniumbase package
2-
__version__ = "4.31.1"
2+
__version__ = "4.31.2"

seleniumbase/behave/behave_sb.py

+8-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@
7171
-D rec-behave (Same as Recorder Mode, but also generates behave-gherkin.)
7272
-D rec-sleep (If the Recorder is enabled, also records self.sleep calls.)
7373
-D rec-print (If the Recorder is enabled, prints output after tests end.)
74-
-D disable-js (Disable JavaScript on Chromium. May break websites!)
74+
-D disable-cookies (Disable Cookies on websites. Pages might break!)
75+
-D disable-js (Disable JavaScript on websites. Pages might break!)
7576
-D disable-csp (Disable the Content Security Policy of websites.)
7677
-D disable-ws (Disable Web Security on Chromium-based browsers.)
7778
-D enable-ws (Enable Web Security on Chromium-based browsers.)
@@ -180,6 +181,7 @@ def get_configured_sb(context):
180181
sb.database_env = "test"
181182
sb.log_path = constants.Logs.LATEST + os.sep
182183
sb.archive_logs = False
184+
sb.disable_cookies = False
183185
sb.disable_js = False
184186
sb.disable_csp = False
185187
sb.disable_ws = False
@@ -535,6 +537,10 @@ def get_configured_sb(context):
535537
if low_key in ["archive-logs", "archive_logs"]:
536538
sb.archive_logs = True
537539
continue
540+
# Handle: -D disable-cookies / disable_cookies
541+
if low_key in ["disable-cookies", "disable_cookies"]:
542+
sb.disable_cookies = True
543+
continue
538544
# Handle: -D disable-js / disable_js
539545
if low_key in ["disable-js", "disable_js"]:
540546
sb.disable_js = True
@@ -1005,6 +1011,7 @@ def get_configured_sb(context):
10051011
sb_config.pdb_option = sb.pdb_option
10061012
sb_config.rec_behave = sb.rec_behave
10071013
sb_config.rec_print = sb.rec_print
1014+
sb_config.disable_cookies = sb.disable_cookies
10081015
sb_config.disable_js = sb.disable_js
10091016
sb_config.disable_csp = sb.disable_csp
10101017
sb_config.record_sleep = sb.record_sleep

seleniumbase/core/browser_launcher.py

+21
Original file line numberDiff line numberDiff line change
@@ -1544,6 +1544,7 @@ def _set_chrome_options(
15441544
multi_proxy,
15451545
user_agent,
15461546
recorder_ext,
1547+
disable_cookies,
15471548
disable_js,
15481549
disable_csp,
15491550
enable_ws,
@@ -1621,6 +1622,8 @@ def _set_chrome_options(
16211622
prefs["intl.accept_languages"] = locale_code
16221623
if block_images:
16231624
prefs["profile.managed_default_content_settings.images"] = 2
1625+
if disable_cookies:
1626+
prefs["profile.default_content_setting_values.cookies"] = 2
16241627
if disable_js:
16251628
prefs["profile.managed_default_content_settings.javascript"] = 2
16261629
if do_not_track:
@@ -2016,6 +2019,7 @@ def _set_firefox_options(
20162019
proxy_bypass_list,
20172020
proxy_pac_url,
20182021
user_agent,
2022+
disable_cookies,
20192023
disable_js,
20202024
disable_csp,
20212025
firefox_arg,
@@ -2089,6 +2093,8 @@ def _set_firefox_options(
20892093
"security.mixed_content.block_active_content", False
20902094
)
20912095
options.set_preference("security.warn_submit_insecure", False)
2096+
if disable_cookies:
2097+
options.set_preference("network.cookie.cookieBehavior", 2)
20922098
if disable_js:
20932099
options.set_preference("javascript.enabled", False)
20942100
if settings.DISABLE_CSP_ON_FIREFOX or disable_csp:
@@ -2188,6 +2194,7 @@ def get_driver(
21882194
cap_file=None,
21892195
cap_string=None,
21902196
recorder_ext=False,
2197+
disable_cookies=False,
21912198
disable_js=False,
21922199
disable_csp=False,
21932200
enable_ws=False,
@@ -2348,6 +2355,7 @@ def get_driver(
23482355
headless
23492356
and (
23502357
proxy_auth
2358+
or disable_cookies
23512359
or disable_js
23522360
or ad_block_on
23532361
or disable_csp
@@ -2402,6 +2410,7 @@ def get_driver(
24022410
cap_file,
24032411
cap_string,
24042412
recorder_ext,
2413+
disable_cookies,
24052414
disable_js,
24062415
disable_csp,
24072416
enable_ws,
@@ -2459,6 +2468,7 @@ def get_driver(
24592468
multi_proxy,
24602469
user_agent,
24612470
recorder_ext,
2471+
disable_cookies,
24622472
disable_js,
24632473
disable_csp,
24642474
enable_ws,
@@ -2520,6 +2530,7 @@ def get_remote_driver(
25202530
cap_file,
25212531
cap_string,
25222532
recorder_ext,
2533+
disable_cookies,
25232534
disable_js,
25242535
disable_csp,
25252536
enable_ws,
@@ -2656,6 +2667,7 @@ def get_remote_driver(
26562667
multi_proxy,
26572668
user_agent,
26582669
recorder_ext,
2670+
disable_cookies,
26592671
disable_js,
26602672
disable_csp,
26612673
enable_ws,
@@ -2751,6 +2763,7 @@ def get_remote_driver(
27512763
proxy_bypass_list,
27522764
proxy_pac_url,
27532765
user_agent,
2766+
disable_cookies,
27542767
disable_js,
27552768
disable_csp,
27562769
firefox_arg,
@@ -2829,6 +2842,7 @@ def get_remote_driver(
28292842
multi_proxy,
28302843
user_agent,
28312844
recorder_ext,
2845+
disable_cookies,
28322846
disable_js,
28332847
disable_csp,
28342848
enable_ws,
@@ -2949,6 +2963,7 @@ def get_local_driver(
29492963
multi_proxy,
29502964
user_agent,
29512965
recorder_ext,
2966+
disable_cookies,
29522967
disable_js,
29532968
disable_csp,
29542969
enable_ws,
@@ -3030,6 +3045,7 @@ def get_local_driver(
30303045
proxy_bypass_list,
30313046
proxy_pac_url,
30323047
user_agent,
3048+
disable_cookies,
30333049
disable_js,
30343050
disable_csp,
30353051
firefox_arg,
@@ -3386,6 +3402,8 @@ def get_local_driver(
33863402
prefs["intl.accept_languages"] = locale_code
33873403
if block_images:
33883404
prefs["profile.managed_default_content_settings.images"] = 2
3405+
if disable_cookies:
3406+
prefs["profile.default_content_setting_values.cookies"] = 2
33893407
if disable_js:
33903408
prefs["profile.managed_default_content_settings.javascript"] = 2
33913409
if do_not_track:
@@ -3796,6 +3814,7 @@ def get_local_driver(
37963814
multi_proxy,
37973815
user_agent,
37983816
recorder_ext,
3817+
disable_cookies,
37993818
disable_js,
38003819
disable_csp,
38013820
enable_ws,
@@ -4321,6 +4340,7 @@ def get_local_driver(
43214340
None, # multi_proxy
43224341
None, # user_agent
43234342
None, # recorder_ext
4343+
disable_cookies,
43244344
disable_js,
43254345
disable_csp,
43264346
enable_ws,
@@ -4563,6 +4583,7 @@ def get_local_driver(
45634583
None, # multi_proxy
45644584
None, # user_agent
45654585
None, # recorder_ext
4586+
disable_cookies,
45664587
disable_js,
45674588
disable_csp,
45684589
enable_ws,

seleniumbase/fixtures/base_case.py

+7
Original file line numberDiff line numberDiff line change
@@ -3760,6 +3760,7 @@ def get_new_driver(
37603760
cap_file=None,
37613761
cap_string=None,
37623762
recorder_ext=None,
3763+
disable_cookies=None,
37633764
disable_js=None,
37643765
disable_csp=None,
37653766
enable_ws=None,
@@ -3820,6 +3821,7 @@ def get_new_driver(
38203821
cap_file - the file containing desired capabilities for the browser
38213822
cap_string - the string with desired capabilities for the browser
38223823
recorder_ext - the option to enable the SBase Recorder extension
3824+
disable_cookies - the option to disable Cookies (May break things!)
38233825
disable_js - the option to disable JavaScript (May break websites!)
38243826
disable_csp - an option to disable Chrome's Content Security Policy
38253827
enable_ws - the option to enable the Web Security feature (Chrome)
@@ -3918,6 +3920,8 @@ def get_new_driver(
39183920
user_agent = self.user_agent
39193921
if recorder_ext is None:
39203922
recorder_ext = self.recorder_ext
3923+
if disable_cookies is None:
3924+
disable_cookies = self.disable_cookies
39213925
if disable_js is None:
39223926
disable_js = self.disable_js
39233927
if disable_csp is None:
@@ -4029,6 +4033,7 @@ def get_new_driver(
40294033
cap_file=cap_file,
40304034
cap_string=cap_string,
40314035
recorder_ext=recorder_ext,
4036+
disable_cookies=disable_cookies,
40324037
disable_js=disable_js,
40334038
disable_csp=disable_csp,
40344039
enable_ws=enable_ws,
@@ -14394,6 +14399,7 @@ def setUp(self, masterqa_mode=False):
1439414399
elif self.record_sleep and not self.recorder_mode:
1439514400
self.recorder_mode = True
1439614401
self.recorder_ext = True
14402+
self.disable_cookies = sb_config.disable_cookies
1439714403
self.disable_js = sb_config.disable_js
1439814404
self.disable_csp = sb_config.disable_csp
1439914405
self.disable_ws = sb_config.disable_ws
@@ -14772,6 +14778,7 @@ def setUp(self, masterqa_mode=False):
1477214778
cap_file=self.cap_file,
1477314779
cap_string=self.cap_string,
1477414780
recorder_ext=self.recorder_ext,
14781+
disable_cookies=self.disable_cookies,
1477514782
disable_js=self.disable_js,
1477614783
disable_csp=self.disable_csp,
1477714784
enable_ws=self.enable_ws,

seleniumbase/plugins/driver_manager.py

+10-2
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,8 @@ def Driver(
8181
cap_file=None, # The desired capabilities to use with a Selenium Grid.
8282
cap_string=None, # The desired capabilities to use with a Selenium Grid.
8383
recorder_ext=None, # Enables the SeleniumBase Recorder Chromium extension.
84-
disable_js=None, # Disable JavaScript on websites. Pages might break!
84+
disable_cookies=None, # Disable Cookies on websites. (Pages might break!)
85+
disable_js=None, # Disable JavaScript on websites. (Pages might break!)
8586
disable_csp=None, # Disable the Content Security Policy of websites.
8687
enable_ws=None, # Enable Web Security on Chromium-based browsers.
8788
disable_ws=None, # Reverse of "enable_ws". (None and False are different)
@@ -172,7 +173,8 @@ def Driver(
172173
cap_file (str): The desired capabilities to use with a Selenium Grid.
173174
cap_string (str): The desired capabilities to use with a Selenium Grid.
174175
recorder_ext (bool): Enables the SeleniumBase Recorder Chromium extension.
175-
disable_js (bool): Disable JavaScript on websites. Pages might break!
176+
disable_cookies (bool): Disable Cookies on websites. (Pages might break!)
177+
disable_js (bool): Disable JavaScript on websites. (Pages might break!)
176178
disable_csp (bool): Disable the Content Security Policy of websites.
177179
enable_ws (bool): Enable Web Security on Chromium-based browsers.
178180
disable_ws (bool): Reverse of "enable_ws". (None and False are different)
@@ -646,6 +648,11 @@ def Driver(
646648
use_auto_ext = True
647649
else:
648650
use_auto_ext = False
651+
if disable_cookies is None:
652+
if "--disable-cookies" in sys_argv:
653+
disable_cookies = True
654+
else:
655+
disable_cookies = False
649656
if disable_js is None:
650657
if "--disable-js" in sys_argv:
651658
disable_js = True
@@ -772,6 +779,7 @@ def Driver(
772779
cap_file=cap_file,
773780
cap_string=cap_string,
774781
recorder_ext=recorder_ext,
782+
disable_cookies=disable_cookies,
775783
disable_js=disable_js,
776784
disable_csp=disable_csp,
777785
enable_ws=enable_ws,

0 commit comments

Comments
 (0)