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 секунды подгружается список город в этом регионе. Может кто подскажет как реализовать ожидание более цивилизованно?