Как можно ожидать текст который должен появиться в Select

Привет всем,
У меня такая ситуация, я должен выбрать название города, после того как я выбираю страну. Проблема в том, что я должен ждать пока загрузится список городов выборной страны. Как я могу ожидать без time.sleep?

time.sleep(2)
select_country = Select(self.browser.css("#country_id"))
select_country.select_by_visible_text("Россия")
time.sleep(2)
select_city = Select(self.browser.css("#city_id"))
select_city.select_by_visible_text("Москва")

http://selenium-python.readthedocs.io/waits.html

Раздел expected conditions

Допустим ваш HTML что-то вроде такого вначале:

<select #country_id>

</select>

И тут в нем начинают подгружатся опции:

<select #country_id>
    <option>Россия</option>
    <option>Украина</option>
    <option>Беларусь</option>
</select>

Получается вам нужно ждать элемент по его видимому тексту. К счастью есть Explicit Waits, и специальный кондишн text_to_be_present_in_element

from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 10)
element = wait.until(EC.text_to_be_present_in_element((By.css, 'select#country_id option'), 'Россия'))
1 лайк

Спасибо помагло!