Skip to content

Commit 0821783

Browse files
committed
Add option for disabling cookies
1 parent 5c31bbf commit 0821783

File tree

7 files changed

+79
-5
lines changed

7 files changed

+79
-5
lines changed

seleniumbase/behave/behave_sb.py

Lines changed: 8 additions & 1 deletion
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

Lines changed: 21 additions & 0 deletions
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

Lines changed: 7 additions & 0 deletions
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

Lines changed: 10 additions & 2 deletions
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,

seleniumbase/plugins/pytest_plugin.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ def pytest_addoption(parser):
9090
--rec-behave (Same as Recorder Mode, but also generates behave-gherkin.)
9191
--rec-sleep (If the Recorder is enabled, also records self.sleep calls.)
9292
--rec-print (If the Recorder is enabled, prints output after tests end.)
93+
--disable-cookies (Disable Cookies on websites. Pages might break!)
9394
--disable-js (Disable JavaScript on websites. Pages might break!)
9495
--disable-csp (Disable the Content Security Policy of websites.)
9596
--disable-ws (Disable Web Security on Chromium-based browsers.)
@@ -992,6 +993,15 @@ def pytest_addoption(parser):
992993
help="""The option to disable JavaScript on web pages.
993994
Warning: Most web pages will stop working!""",
994995
)
996+
parser.addoption(
997+
"--disable_cookies",
998+
"--disable-cookies",
999+
action="store_true",
1000+
dest="disable_cookies",
1001+
default=False,
1002+
help="""The option to disable Cookies on web pages.
1003+
Warning: Several pages may stop working!""",
1004+
)
9951005
parser.addoption(
9961006
"--disable_csp",
9971007
"--disable-csp",
@@ -1628,6 +1638,7 @@ def pytest_configure(config):
16281638
elif sb_config.record_sleep and not sb_config.recorder_mode:
16291639
sb_config.recorder_mode = True
16301640
sb_config.recorder_ext = True
1641+
sb_config.disable_cookies = config.getoption("disable_cookies")
16311642
sb_config.disable_js = config.getoption("disable_js")
16321643
sb_config.disable_csp = config.getoption("disable_csp")
16331644
sb_config.disable_ws = config.getoption("disable_ws")

seleniumbase/plugins/sb_manager.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ def SB(
4747
cap_file=None, # The desired capabilities to use with a Selenium Grid.
4848
cap_string=None, # The desired capabilities to use with a Selenium Grid.
4949
recorder_ext=None, # Enables the SeleniumBase Recorder Chromium extension.
50-
disable_js=None, # Disable JavaScript on websites. Pages might break!
50+
disable_cookies=None, # Disable Cookies on websites. (Pages might break!)
51+
disable_js=None, # Disable JavaScript on websites. (Pages might break!)
5152
disable_csp=None, # Disable the Content Security Policy of websites.
5253
enable_ws=None, # Enable Web Security on Chromium-based browsers.
5354
enable_sync=None, # Enable "Chrome Sync" on websites.
@@ -166,7 +167,8 @@ def SB(
166167
cap_file (str): The desired capabilities to use with a Selenium Grid.
167168
cap_string (str): The desired capabilities to use with a Selenium Grid.
168169
recorder_ext (bool): Enables the SeleniumBase Recorder Chromium extension.
169-
disable_js (bool): Disable JavaScript on websites. Pages might break!
170+
disable_cookies (bool): Disable Cookies on websites. (Pages might break!)
171+
disable_js (bool): Disable JavaScript on websites. (Pages might break!)
170172
disable_csp (bool): Disable the Content Security Policy of websites.
171173
enable_ws (bool): Enable Web Security on Chromium-based browsers.
172174
enable_sync (bool): Enable "Chrome Sync" on websites.
@@ -739,6 +741,11 @@ def SB(
739741
use_auto_ext = True
740742
else:
741743
use_auto_ext = False
744+
if disable_cookies is None:
745+
if "--disable-cookies" in sys_argv:
746+
disable_cookies = True
747+
else:
748+
disable_cookies = False
742749
if disable_js is None:
743750
if "--disable-js" in sys_argv:
744751
disable_js = True
@@ -973,6 +980,7 @@ def SB(
973980
sb_config.log_cdp_events = log_cdp_events
974981
sb_config.no_sandbox = None
975982
sb_config.disable_gpu = None
983+
sb_config.disable_cookies = disable_cookies
976984
sb_config.disable_js = disable_js
977985
sb_config._multithreaded = False
978986
sb_config.reuse_session = False
@@ -1081,6 +1089,7 @@ def SB(
10811089
sb.log_cdp_events = sb_config.log_cdp_events
10821090
sb.no_sandbox = sb_config.no_sandbox
10831091
sb.disable_gpu = sb_config.disable_gpu
1092+
sb.disable_cookies = sb_config.disable_cookies
10841093
sb.disable_js = sb_config.disable_js
10851094
sb._multithreaded = sb_config._multithreaded
10861095
sb._reuse_session = sb_config.reuse_session

seleniumbase/plugins/selenium_plugin.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ class SeleniumBrowser(Plugin):
6969
--rec-behave (Same as Recorder Mode, but also generates behave-gherkin.)
7070
--rec-sleep (If the Recorder is enabled, also records self.sleep calls.)
7171
--rec-print (If the Recorder is enabled, prints output after tests end.)
72+
--disable-cookies (Disable Cookies on websites. Pages might break!)
7273
--disable-js (Disable JavaScript on websites. Pages might break!)
7374
--disable-csp (Disable the Content Security Policy of websites.)
7475
--disable-ws (Disable Web Security on Chromium-based browsers.)
@@ -710,6 +711,15 @@ def options(self, parser, env):
710711
help="""The option to disable JavaScript on web pages.
711712
Warning: Most web pages will stop working!""",
712713
)
714+
parser.addoption(
715+
"--disable_cookies",
716+
"--disable-cookies",
717+
action="store_true",
718+
dest="disable_cookies",
719+
default=False,
720+
help="""The option to disable Cookies on web pages.
721+
Warning: Several pages may stop working!""",
722+
)
713723
parser.addoption(
714724
"--disable_csp",
715725
"--disable-csp",
@@ -1230,6 +1240,7 @@ def beforeTest(self, test):
12301240
elif self.options.record_sleep:
12311241
test.test.recorder_mode = True
12321242
test.test.recorder_ext = True
1243+
test.test.disable_cookies = self.options.disable_cookies
12331244
test.test.disable_js = self.options.disable_js
12341245
test.test.disable_csp = self.options.disable_csp
12351246
test.test.disable_ws = self.options.disable_ws

0 commit comments

Comments
 (0)