Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Change language on Firefox with Selenium Python

I am trying to change the language of Selenium Webdriver Firefox from English to Spanish.

I have the following code in place:

def get_webdriver(attempts=3, timeout=60):
  firefox_profile = webdriver.FirefoxProfile()
  firefox_profile.set_preference("intl.accept_languages", "es-es")

  desired_capabilities = getattr(
      DesiredCapabilities, "FIREFOX").copy()

  hub_url = urljoin('http://hub:4444', '/wd/hub')
  driver = webdriver.Remote(
    command_executor=hub_url, desired_capabilities=desired_capabilities,
    browser_profile=firefox_profile)

  return driver

However, the driver being returned is still in English and not in Spanish. What am I missing? How can I set the language to Spanish?

like image 219
Druhin Bala Avatar asked Sep 22 '15 22:09

Druhin Bala


People also ask

How do I use selenium python in Firefox?

To make Firefox work with Python selenium, you need to install the geckodriver. The geckodriver driver will start the real firefox browser and supports Javascript. Take a look at the selenium firefox code. First import the webdriver, then make it start firefox.

Can I use Selenium with Firefox?

Mozilla Firefox is one of the most widely used browsers in the world. It has enhanced features and is supported by a multitude of the latest testing tools and techniques. One such tool is Selenium.


2 Answers

To change the language for Firefox Browser exectued by Selenium do as follows:

English:

from selenium import webdriver

profile = webdriver.FirefoxProfile()
profile.set_preference('intl.accept_languages', 'en-US, en')
driver = webdriver.Firefox(firefox_profile=profile)

German:

from selenium import webdriver

profile = webdriver.FirefoxProfile()
profile.set_preference('intl.accept_languages', 'de-DE, de')
driver = webdriver.Firefox(firefox_profile=profile)

There is no need to import FirefoxProfile, because this method is linked to webdriver.

Here you'll find a full list of all country/language codes: https://de.wikipedia.org/wiki/Liste_der_ISO-639-1-Codes

like image 146
chickenshifu Avatar answered Sep 28 '22 03:09

chickenshifu


So I figured out the answer:

def get_webdriver(attempts=3, timeout=60, locale='en-us'):
  firefox_profile = webdriver.FirefoxProfile()
  firefox_profile.set_preference("intl.accept_languages", locale)
  firefox_profile.update_preferences()

  desired_capabilities = getattr(
      DesiredCapabilities, "FIREFOX").copy()

  hub_url = urljoin('http://hub:4444', '/wd/hub')
  driver = webdriver.Remote(
    command_executor=hub_url, desired_capabilities=desired_capabilities,
    browser_profile=firefox_profile)

  return driver

So, whenever you call this function just be sure to pass the param of locale to whatever language you want.

Eg, for German:

get_webdriver(locale='de') 

Enjoy!

like image 37
Druhin Bala Avatar answered Sep 28 '22 05:09

Druhin Bala