Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

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

selenium
python
webdriver
Теги: #<Tag:0x00007fedc7b3bd40> #<Tag:0x00007fedc7b3bac0> #<Tag:0x00007fedc7b3b980>

#1

Привет всем,
У меня такая ситуация, я должен выбрать название города, после того как я выбираю страну. Проблема в том, что я должен ждать пока загрузится список городов выборной страны. Как я могу ожидать без 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("Москва")

(Bolatbek) #2

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

Раздел expected conditions


(Oleksandr Khotemskyi) #3

Допустим ваш 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'), 'Россия'))

#4

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