Как сделать выбор в выпадающем меню с помощью 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, '[имя_атрибута="значение"]')


