web-dev-qa-db-fra.com

Définir la langue de Chrome à l'aide de Selenium ChromeDriver

Je télécharge ChromeDriver et par défaut la langue du navigateur est en anglais, je dois le changer en espagnol et je n'ai pas pu.

public WebDriver getDriver(String locale){   
    System.setProperty("webdriver.chrome.driver", "driver/chromedriver.exe");
    return new ChromeDriver();
}

public void initializeSelenium() throws Exception{
    driver = getDriver("en-us")
}
20
elcharrua

Vous pouvez le faire en ajoutant les commutateurs de ligne de commande de Chrome "--lang".

Fondamentalement, il vous suffit de démarrer ChromeDriver avec un argument ChromeOption--lang=es, voir API pour plus de détails.

Voici un exemple pratique de code C # pour savoir comment démarrer Chrome en espagnol en utilisant Selenium.

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

Le code Java devrait être à peu près le même (non testé). Rappelez-vous que les paramètres régionaux sont ici sous la forme langage [-pays] où langue est le code à 2 lettres d'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
}
17
Yi Zeng

Pour moi, --lang n'a pas fonctionné. Il semble définir la langue du premier onglet ouvert, tous les autres chrome sont démarrés avec --lang = en-US.

Ce qui a fonctionné est le suivant:

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);

J'ai eu des problèmes avec Chrome en utilisant le format de date américain (mm/jj/aaaa) au lieu du format GB jj/mm/aaaa (même si je les avais définis dans Chrome). Utilisation:

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

résolu cela.

4
Paul Yardley

Pour moi --lang n'a pas fonctionné non plus. Je voulais effectuer des tests de connexion Facebook avec une langue spécifique (en-US au lieu de en-GB) et ce que j'ai trouvé, c'est que certaines pages (comme Facebook) définissent l'interface en fonction de la variable d'environnement système LANG... Donc si les réponses ci-dessus ne fonctionnent pas, essayez de changer la variable d'environnement LANG. Testé sous Linux.

1
omikron

J'essayais la même chose et ci-dessus, rien ne fonctionnait pour moi, enfin j'ai essayé ci-dessous et cela a fonctionné:

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
Anuj Jain

Pour les personnes utilisant du sélénium avec du rubis:

Je l'ai fait fonctionner de cette façon:

prefs_hash = {
       'credentials_enable_service' => false,
       'profile' => {
           'password_manager_enabled' => false,
       },
       'intl.accept_languages' => 'fr-FR', // <- here
    }

// [...]

browser = Watir::Browser.new :chrome, :prefs => prefs_hash, switches: switches, desired_capabilities: caps

0
Nsy