Change language on Firefox with Selenium Python

2019-07-19 02:44发布

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?

3条回答
Luminary・发光体
2楼-- · 2019-07-19 03:26

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!

查看更多
做个烂人
3楼-- · 2019-07-19 03:32

I do not know much about Selenium, but from my research it looks like you may be using the wrong language keyword. From this link

https://groups.google.com/forum/#!topic/nightwatchjs/qwtLPIAJa_c

it looks like it should be QASpanish instead of es-es. Have you checked to make sure you are using the correct keyword?

查看更多
虎瘦雄心在
4楼-- · 2019-07-19 03:40

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

查看更多
登录 后发表回答