Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Переключение языков в Chrome headless Selenium Python



Переключение языков в Chrome headless Selenium Python
2022-11-13 00:51
Добрый день
 

Прошу помочь мне разобраться как 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
 
 
 

 



Скрыть выбор приложения в браузере Chrome.
2022-11-28 16:57

Коллеги приветствую. 

 

Автоматизирую приложение на Java + Selenium и у меня на одном из этапов кейса присутствует электронная подпись. Это виндовое приложение. 

В момент, когда кейс доходит до вызова этого приложения, появляется следующая форма( даже не знаю как правильно ее назвать)

 

1.png
 

Без понятия как ее автоматически выбирать в браузере. 

Пробовал следующие варианты:

1. Нажать клавиши Left и Enter, чтобы перейти на кнопку "Открыть приложение" и выбрать, но кейс падает т.к. надо привязываться к какому-то элементу, а элемент перекрыт пытающейся открыться подписью 

2.png
public OtherBankPage pressKeys() {
       sendMoneyButton.sendKeys(Keys.LEFT);
       sendMoneyButton.sendKeys(Keys.ENTER);
return new OtherBankPage(driver);
}

2. Пробовал через Actions, но тщетно. Тест не падает, но всплывающее окно не реагирует. 

    public OtherBankPage pressKeys() throws InterruptedException {
        Thread.sleep(3000); //поставил ожидания, т.к думал что может кнопки не успевают нажаться
        Actions actions = new Actions(driver);
        actions.sendKeys(Keys.LEFT);
        Thread.sleep(1000);
        actions.sendKeys(Keys.ENTER).build().perform();
        return new OtherBankPage(driver);
    }

Как закрыть это окно? Я подозреваю, что это можно сделать через ChromeOptions, в эту сторону тоже много что перепробовал, включая разные настройки, типа

chromeOptions.addArguments("--disable-notifications")

Не помогает, к сожалению. 

Прикрепленные изображения

  • 1.png
  • 2.png


В избранное