Skip to content

[🐛 Bug]: [C#] AddUserProfilePreference incorrectly parses dot-separated keys into nested JSON structures #15691

@lovezouyiyi

Description

@lovezouyiyi

Description

Environment
Selenium Version: 4.31.0
Browser: Chrome

Browser Version: 136.0.7103.49
Language Bindings: C#

OS: Windows 10

code:

var prefs = new Dictionary<string, object>
{
["devtools.preferences.closeable-tabs"] = "{"security":true,"freestyler":true,"chrome-recorder":true}",
["devtools.preferences.console.sidebar-selected-filter"] = ""message"",
["devtools.preferences.console.sidebar.width"] = "{"vertical":{"size":0,"showMode":"OnlyMain"}}",
["devtools.preferences.currentDockState"] = ""right"",
["devtools.preferences.drawer-view-selected-tab"] = ""elements"",
["devtools.preferences.drawer-view-tab-order"] = "{"console-view":10,"freestyler":20,"elements":30}",
["devtools.preferences.elements.styles.sidebar.width"] = "{"vertical":{"size":0,"showMode":"OnlyMain"}}",
["devtools.preferences.inspector-view.split-view-state"] = "{"vertical":{"size":0}}",
["devtools.preferences.inspector.drawer-split-view-state"] = "{"horizontal":{"size":0,"showMode":"Both"}}",
["devtools.preferences.inspectorVersion"] = "38",
//["devtools.preferences.network-log"] = "{ "preserve-log": "true" }", //"network-log": { "preserve-log": "true" },
["devtools.preferences.network-log.preserve-log"] = "true", // "network-log.preserve-log": "true",

 ["devtools.preferences.network-log.preserve-logqaq"] = "{\"horizontal\":{\"size\":0,\"showMode\":\"Both\"}}",

 ["devtools.preferences.network-panel-sidebar-state"] = "{\"vertical\":{\"size\":0,\"showMode\":\"OnlyMain\"}}",
 ["devtools.preferences.network-panel-split-view-state"] = "{\"vertical\":{\"size\":0}}",
 ["devtools.preferences.network-panel-split-view-waterfall"] = "{\"vertical\":{\"size\":0}}",
 ["devtools.preferences.panel-selected-tab"] = "\"network\"",
 ["devtools.preferences.panel-tab-order"] = "{\"network\":10,\"sources\":20,\"console\":30,\"timeline\":40,\"heap-profiler\":50,\"resources\":60,\"security\":70,\"lighthouse\":80,\"chrome-recorder\":90}",
 ["devtools.preferences.releaseNoteVersionSeen"] = "76",
 ["devtools.preferences.styles-pane-sidebar-tab-order"] = "{\"styles\":10,\"computed\":20}",
 ["devtools.preferences.views-location-override"] = "{\"elements\":\"drawer-view\"}"

};

foreach (var pref in prefs)
{
options.AddUserProfilePreference(pref.Key, pref.Value);
}

  • I used this code to add the chrome startup configuration
  • As expected, it opens devtools and preserve log.Like this:

Image

  • But it only opens devtools and not preserve log.

Image

The reason is
In the Preferences file under C:\Users\user\AppData\Local\Google\Chrome\User Data\Default, the line “network-log.preserve-log”: “true”, was converted to an incorrect form that
“network-log": {
“preserve-log": ‘true’, ‘preserve-logqaq’.
}

I have implemented this operation using python language and it is fine.
Is it possible to change what is written to the actual file to “network-log.preserve-log”: “true”

Translated with DeepL.com (free version)

Reproducible Code

code:
ChromeOptions options = new ChromeOptions();
options.AddArgument("--start-maximized"); // 
options.AddArgument("--auto-open-devtools-for-tabs");
 var prefs = new Dictionary<string, object>
 {
     ["devtools.preferences.closeable-tabs"] = "{\"security\":true,\"freestyler\":true,\"chrome-recorder\":true}",
     ["devtools.preferences.console.sidebar-selected-filter"] = "\"message\"",
     ["devtools.preferences.console.sidebar.width"] = "{\"vertical\":{\"size\":0,\"showMode\":\"OnlyMain\"}}",
     ["devtools.preferences.currentDockState"] = "\"right\"",
     ["devtools.preferences.drawer-view-selected-tab"] = "\"elements\"",
     ["devtools.preferences.drawer-view-tab-order"] = "{\"console-view\":10,\"freestyler\":20,\"elements\":30}",
     ["devtools.preferences.elements.styles.sidebar.width"] = "{\"vertical\":{\"size\":0,\"showMode\":\"OnlyMain\"}}",
     ["devtools.preferences.inspector-view.split-view-state"] = "{\"vertical\":{\"size\":0}}",
     ["devtools.preferences.inspector.drawer-split-view-state"] = "{\"horizontal\":{\"size\":0,\"showMode\":\"Both\"}}",
     ["devtools.preferences.inspectorVersion"] = "38",
     //["devtools.preferences.network-log"] = "{ \"preserve-log\": \"true\" }",  //"network-log": { "preserve-log": "true" },
     ["devtools.preferences.network-log.preserve-log"] = "true",  //  "network-log.preserve-log": "true",

     ["devtools.preferences.network-log.preserve-logqaq"] = "{\"horizontal\":{\"size\":0,\"showMode\":\"Both\"}}",

     ["devtools.preferences.network-panel-sidebar-state"] = "{\"vertical\":{\"size\":0,\"showMode\":\"OnlyMain\"}}",
     ["devtools.preferences.network-panel-split-view-state"] = "{\"vertical\":{\"size\":0}}",
     ["devtools.preferences.network-panel-split-view-waterfall"] = "{\"vertical\":{\"size\":0}}",
     ["devtools.preferences.panel-selected-tab"] = "\"network\"",
     ["devtools.preferences.panel-tab-order"] = "{\"network\":10,\"sources\":20,\"console\":30,\"timeline\":40,\"heap-profiler\":50,\"resources\":60,\"security\":70,\"lighthouse\":80,\"chrome-recorder\":90}",
     ["devtools.preferences.releaseNoteVersionSeen"] = "76",
     ["devtools.preferences.styles-pane-sidebar-tab-order"] = "{\"styles\":10,\"computed\":20}",
     ["devtools.preferences.views-location-override"] = "{\"elements\":\"drawer-view\"}"
 };


 foreach (var pref in prefs)
 {
     options.AddUserProfilePreference(pref.Key, pref.Value);
 }
IWebDriver driver = new ChromeDriver(options);

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions