Ожидание загрузки элемента из выпадающего списка

import unittest
import os
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException

def wait_xpath(driver, xpath):
    try:
        wait = WebDriverWait(driver, 30).until(
            EC.element_to_be_clickable((By.XPATH, xpath)))
        return wait
    except TimeoutException:
        print("Не дождались появления панели на форме " + xpath)


def wait_file_xpath(driver, xpath):
    try:
        wait = WebDriverWait(driver, 30).until(
            EC.presence_of_element_located((By.XPATH, xpath)))
        return wait
    except TimeoutException:
        print("Не дождались появления панели на форме " + xpath)



def click_xpath(driver, xpath):
    driver.find_element_by_xpath(xpath).click()
    
def wait_and_click_xpath(driver, xpath):
    tmp = wait_xpath(driver, xpath)
    tmp.click()

def send_keys_xpath(driver, xpath, keys):
    tmp = wait_xpath(driver, xpath)
    #tmp.clear()
    tmp.send_keys(keys)

class ServiceTests(unittest.TestCase):
    def setUp(self):

Доходим до выбора адреса и спотыкаюсь на этом,хочу реализовать без time.sleep()

#Изменить адрес регистрации
        wait_and_click_xpath(self.driver,
            "//*[@id='form494201420.FormStep7.Panel71.Panel710.residenceaddress']/div[1]/div/div/a[1]/span[1]")

        #!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

        #Выбор региона
        wait_and_click_xpath(self.driver,
            "//div[2]/div/form/span/input")

        #Приморский край выбор
        wait_and_click_xpath(self.driver,
            "//a[55]/span[2]")

        #time.sleep(2)
        #Город
        wait_and_click_xpath(self.driver,
            "//div[3]/div/div[2]/div[2]/div/form/span/input")
                
        #Выбор города
        try:
            wait_and_click_xpath(self.driver,
                "//div[3]/div/div[2]/div[2]/div[3]/div[2]/div[2]/div/a[5]/span[2]")
        except:
            wait_and_click_xpath(self.driver,
                "//div[3]/div/div[2]/div[2]/div/form/span/input")

        wait_and_click_xpath(self.driver,
                "//div[3]/div/div[2]/div[2]/div[3]/div[2]/div[2]/div/a[5]/span[2]")

        #Улица
        wait_and_click_xpath(self.driver,
            "//div[5]/div/div[2]/div[2]/div/form/span/input")

        #Выбор улицы
        #wait_and_click_xpath(self.driver,
        #   "//a[858]")
        try:
            wait_and_click_xpath(self.driver,
                "//a[858]")
        except:
            wait_and_click_xpath(self.driver,
                "///div[5]/div/div[2]/div[2]/div/form/span/input")
            
        wait_and_click_xpath(self.driver,
                "//a[858]")

Проблема с выбором города и улицы так работает,но очень криво и ожидание очень большое,хотелось бы избавиться от слипов.Выбираем регион он сразу выдаёт весь список регионов при нажатии,проблема в дальнейшем с выбором города,в том,что 1-2 секунды подгружается список город в этом регионе. Может кто подскажет как реализовать ожидание более цивилизованно?

Выпадающий список у вас как реализован? Как элемент <select /> или по другому?

7 лайков