How to set Chrome preferences using Selenium Webdriver .NET binding?

后端 未结 2 1079
暗喜
暗喜 2020-11-30 07:47

Here is what I\'m using, user agent can be successfully set, while download preferences cannot.

Windows 7, Chrome 26, Selenium-dotnet-2.31.2, chromedriver_win_26.0.1

相关标签:
2条回答
  • 2020-11-30 08:38

    The Selenium dotNet driver does not support setting the chrome.prefs out of the box. The problem is that chrome.prefs must be defined as prefs under the chromeOptions node. The ChromeOptions class does not contain this variable, so you'll need to create your own ChromeOptions class:

    public class ChromeOptionsWithPrefs: ChromeOptions
    {
        public Dictionary<string,object> prefs { get; set; }
    }
    
    public static void Initialize()
    {
        var options = new ChromeOptionsWithPrefs();
        options.prefs = new Dictionary<string, object>
        {
            { "intl.accept_languages", "nl" }
        };
        _driver = new ChromeDriver(@"C:\path\chromedriver", options);
    }
    
    0 讨论(0)
  • 2020-11-30 08:38

    If you have updated to Chrome Version 36.0.x and Selenium 2.42, Martins solution no longer works.

    It seems to have been updated. You now can use the following code

    ChromeOptions options = new ChromeOptions();
    options.AddUserProfilePreference(string preferenceName, object preferenceValue); 
    

    I currently use it to change my Printer settings to "Save as PDF" instead of the default using this code as an example

    ChromeOptions options = new ChromeOptions();
    options.AddUserProfilePreference("printing.print_preview_sticky_settings.appState", "{\"version\":2,\"isGcpPromoDismissed\":false,\"selectedDestinationId\":\"Save as PDF\");
    

    I thought Martin's solution was very good and accurate, but it suddenly stopped working for me, so naturally I had to see if I could find a solution.

    0 讨论(0)
提交回复
热议问题