Set Chrome's language using Selenium ChromeDriver

后端 未结 7 1309
囚心锁ツ
囚心锁ツ 2020-12-05 18:24

I download ChromeDriver and by defaults the browser language is in English, I need to change it to Spanish, and I have been unable.

public WebDriver getDrive         


        
相关标签:
7条回答
  • 2020-12-05 18:34

    For me, --lang didn't work. It seems to set the language of the first opened tab, all others chrome processes are started with --lang=en-US.

    What did work is the following:

    DesiredCapabilities jsCapabilities = DesiredCapabilities.chrome();
    ChromeOptions options = new ChromeOptions();
    Map<String, Object> prefs = new HashMap<>();
    prefs.put("intl.accept_languages", language);
    options.setExperimentalOption("prefs", prefs);
    jsCapabilities.setCapability(ChromeOptions.CAPABILITY, options);
    
    0 讨论(0)
  • 2020-12-05 18:37

    For me --lang also didn't work. I wanted to perform Facebook Login tests with specific language (en-US instead of en-GB) and what I found is that some pages (like Facebook) set interface according to system environment variable LANG... So if above answers doesn't work, try changing LANG environment variable. Tested on Linux.

    0 讨论(0)
  • 2020-12-05 18:44

    You can do it by adding Chrome's command line switches "--lang".

    Basically, all you need is starting ChromeDriver with an ChromeOption argument --lang=es, see API for details.

    The following is a working example of C# code for how to start Chrome in Spanish using Selenium.

    ChromeOptions options = new ChromeOptions();
    options.addArguments("--lang=es");
    ChromeDriver driver = new ChromeDriver(options);
    

    Java code should be pretty much the same (untested). Remember, locale here is in the form language[-country] where language is the 2 letter code from ISO-639.

    public WebDriver getDriver(String locale){   
        System.setProperty("webdriver.chrome.driver", "driver/chromedriver.exe");
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--lang=" + locale);
        return new ChromeDriver(options);
    }
    
    public void initializeSelenium() throws Exception{
        driver = getDriver("es"); // two letters to represent the locale, or two letters + country
    }
    
    0 讨论(0)
  • 2020-12-05 18:52

    I was trying the same and above listed nothing worked for me, at last I tried the below and it worked:

    ChromeOptions chromeOptions = new ChromeOptions();
    
    Map<String, Object> prefs = new HashMap<String, Object>();
    
    prefs.put("intl.accept_languages", "ja-jp,ja");
    
    chromeOptions.setExperimentalOption("prefs", prefs);
    
    WebDriver driver = new ChromeDriver(chromeOptions);
    
    0 讨论(0)
  • 2020-12-05 18:53

    I had problems with Chrome using US date format (mm/dd/yyyy) instead of the GB dd/mm/yyyy format (even though I had set these in Chrome). Using:

    options.addArguments("--lang=en-GB");
    

    resolved this.

    0 讨论(0)
  • 2020-12-05 18:56

    As of now (Jan 2020 - Chrome Version 79.0.3945.130) The C# in the accepted answer does not work.

    The simplest approach that I can find to work in C# presently:

    ChromeOptions options = new ChromeOptions();
    options.AddUserProfilePreference("intl.accept_languages", language);
    WebDriver driver = new ChromeDriver(chromeOptions);
    
    0 讨论(0)
提交回复
热议问题