Прошу помочь мне разобраться как Selenium переключает язык в браузере (на примере Chrome). Я работаю через удаленные терминал на Linux в режиме headless (без запуска самого браузера при тестах).
Я написал простой скрипт (представлен ниже), который пытается задать язык es для браузера Chrome и с этой настройкой идет на www.google.com.
После этого я проверяю текущий язык страницы через JavaScript и через атрибут lang тега html.
В итоге, я ожидаю, что получу результат es, а получаю от JavaScript — en-US, а атрибут lang выдает ru
Что я делаю не так?
from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By language = 'es' chrome_options = webdriver.ChromeOptions() chrome_options.add_argument("--headless") chrome_options.add_argument("--no-sandbox") chrome_options.add_argument("--disable-extensions") chrome_options.add_argument("--start-maximized") chrome_options.add_argument("--disable-dev-shm-usage") chrome_options.add_experimental_option("prefs", {'intl.accept_languages': language}) browser = webdriver.Chrome(options=chrome_options) print("Selenium.webdriver:\t", webdriver.__version__) print("browserVersion:\t\t", browser.capabilities['browserVersion']) print("chromedriverVersion:\t", browser.capabilities['chrome']['chromedriverVersion'].split(' ')[0]) print("-----------\n") browser.get("https://www.google.com/") print("URL:\t",browser.current_url, "\nTitle:\t", browser.title) print("My lang:\t", language) print("JS lang:\t", browser.execute_script("return window.navigator.userLanguage || window.navigator.language")) print("HTML lang:\t", browser.find_element(By.TAG_NAME, "html").get_attribute('lang')) browser.quit()
Selenium.webdriver: 4.5.0 browserVersion: 107.0.5304.87 chromedriverVersion: 107.0.5304.87 ----------- URL: https://www.google.com/ Title: Google My lang: es JS lang: en-US HTML lang: ru