Skip to content

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

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
lovezouyiyi opened this issue May 2, 2025 · 1 comment
Labels
A-needs-triaging A Selenium member will evaluate this soon! C-dotnet .NET Bindings D-chrome I-defect Something is not working as intended OS-windows

Comments

@lovezouyiyi
Copy link

lovezouyiyi commented May 2, 2025

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);
@lovezouyiyi lovezouyiyi added A-needs-triaging A Selenium member will evaluate this soon! I-defect Something is not working as intended labels May 2, 2025
@selenium-ci
Copy link
Member

@lovezouyiyi, thank you for creating this issue. We will troubleshoot it as soon as we can.

Selenium Triage Team: remember to follow the Triage Guide

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-needs-triaging A Selenium member will evaluate this soon! C-dotnet .NET Bindings D-chrome I-defect Something is not working as intended OS-windows
Projects
None yet
Development

No branches or pull requests

2 participants