Как реализовать задержку без использования time.sleep
Сделал функцию очистки корзины в инет магазине. Без time.sleep, получаю ошибку ElementClickInterceptedException, подскажите возможно как то использовать явное ожидание вместо time.sleep?
# Получаем список кнопок удаления напротив каждого товара
def get_cart_goods(self):
WebDriverWait(self.driver, 30).until(EC.element_to_be_clickable((By.XPATH,
self.cart_goods)))
return self.driver.find_elements(By.XPATH, value= self.cart_goods)
# Получаем кнопку подтверждения удаления товара
def get_delete_btn(self):
return WebDriverWait(self.driver, 30).until(EC.element_to_be_clickable(
(By.XPATH, self.delete_btn)))
def clear_cart(self):
cart_goods_list = self.get_cart_goods()
for cart_good in cart_goods_list:
cart_good.click()
self.get_delete_btn().click()
time.sleep(1)
Ответы (1 шт):
Автор решения: BlackTemplar
→ Ссылка
Попробуйте функцию clear_cart изменить, так ожидание будет реализовано через WebDriverWait
from selenium.webdriver.common.by import By
def clear_cart(self):
cart_goods_list = self.get_cart_goods()
for cart_good in cart_goods_list:
cart_good.click()
self.get_delete_btn().click()
WebDriverWait(self.driver, 30).until(EC.invisibility_of_element((By.CSS_SELECTOR, "selector")))