MCPcopy Create free account
hub / github.com/seleniumbase/SeleniumBase / ChromeOptions

Class ChromeOptions

seleniumbase/undetected/options.py:7–78  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5
6
7class ChromeOptions(ChromiumOptions):
8 _session = None
9 _user_data_dir = None
10
11 @property
12 def user_data_dir(self):
13 return self._user_data_dir
14
15 @user_data_dir.setter
16 def user_data_dir(self, path):
17 """Sets the browser profile folder to use. Creates one if missing."""
18 abs_path = os.path.abspath(path)
19 self._user_data_dir = os.path.normpath(abs_path)
20
21 @staticmethod
22 def _undot_key(key, value):
23 """Turn a (dotted key, value) into a proper nested dict."""
24 if "." in key:
25 key, rest = key.split(".", 1)
26 value = ChromeOptions._undot_key(rest, value)
27 return {key: value}
28
29 @staticmethod
30 def _merge_nested(a, b):
31 """Merges b into a, overwriting duplicate leaf values using b."""
32 for key in b:
33 if key in a:
34 if isinstance(a[key], dict) and isinstance(b[key], dict):
35 ChromeOptions._merge_nested(a[key], b[key])
36 continue
37 a[key] = b[key]
38 return a
39
40 def handle_prefs(self, user_data_dir):
41 prefs = self.experimental_options.get("prefs")
42 if prefs:
43 user_data_dir = user_data_dir or self._user_data_dir
44 default_path = os.path.join(user_data_dir, "Default")
45 os.makedirs(default_path, exist_ok=True)
46 undot_prefs = {}
47 for key, value in prefs.items():
48 undot_prefs = self._merge_nested(
49 undot_prefs, self._undot_key(key, value)
50 )
51 prefs_file = os.path.join(default_path, "Preferences")
52 with suppress(Exception):
53 if os.path.exists(prefs_file):
54 with open(
55 prefs_file, encoding="utf-8", mode="r", errors="ignore"
56 ) as f:
57 undot_prefs = self._merge_nested(
58 json.load(f), undot_prefs
59 )
60 with suppress(Exception):
61 with open(
62 prefs_file, encoding="utf-8", mode="w", errors="ignore"
63 ) as f:
64 json.dump(undot_prefs, f)

Callers 1

__init__Method · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…