Как сделать выбор в выпадающем меню с помощью selenium

Пробую pytest в сочетании с selenium. Весь код работает до момента выбора в меню выбора региона. После открытия списка, либо происходит assert Регион не сменился на Камчатский, либо, когда пробовал другие методы (допустим c помощью By.LINK_TEXT) происходит ошибка no such element: Unable to locate element. Как заставить selenium кликнуть на Камчатский край?

Мой код То что должно быть выбрано Структура сайта до списка

import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep

@pytest.fixture
def browser():
    driver = webdriver.Chrome()
    yield driver
    driver.quit()

def test_scenario2(browser):
    browser.get('https://sbis.ru/')
    contacts_link = browser.find_element(By.LINK_TEXT, "Контакты").click() # переход на вкладку контакты
    assert browser.current_url == "https://sbis.ru/contacts", "Не было перехода на вкладку контакты"
    
    """
    Видимо настройки браузера (или чё-то в нём, кроме расширений) могут влиять на автоопределение региона
    """
    sleep(4)
    assert browser.current_url == "https://sbis.ru/contacts/02-respublika-bashkortostan?tab=clients", "Вкладка контакты не загрузилась или регион не Башкирия"
    
    partners = browser.find_element(By.ID, "contacts_list")
    assert partners is not None, "Партнёров нет"

    region = browser.find_element(By.CLASS_NAME, "sbis_ru-Region-Chooser").click()
    sleep(10)
    # LINK_TEXT не работает
    browser.find_element(By.XPATH, "//span[text()='41 Камчатский край']").click()
    assert browser.current_url == "https://sbis.ru/contacts/41-kamchatskij-kraj?tab=clients", "Регион не сменился на Камчатский"
    sleep(5)

Ответы (1 шт):

Автор решения: Dark Space

Попробуйте так:

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.implicitly_wait(5) # Устанавливаем базовое ожидание
driver.get('https://sbis.ru/contacts/02-respublika-bashkortostan?tab=clients')

driver.find_element(By.CLASS_NAME, 'sbis_ru-Region-Chooser__text').click() # Клик на меню выбора региона
driver.find_element(By.CSS_SELECTOR, '[title="Камчатский край"]').click() # Клик на "Камчатский край"

Если у тега есть какой-то нестандартный селектор, его можно найти через

driver.find_element(By.CSS_SELECTOR, '[имя_атрибута="значение"]')
→ Ссылка