Метод click() отработал, но модальное окно не открылось
Ситуация следующая, в логах пишет что в add_employee_from_directory первый метод click_to_element отработал и на find_element_by_text падает ошибка TimeOut. Эта ошибка выходит из-за того что метод клика вроде как отработал, но самого клика не произошло (смотрел при запуске теста в вебе), должно было открыться модальное окно с содержимым. Пробовал клик через js, выставлял ожидания и кондишены, толку 0 и клик через раз происходит. Кто ни будь сталкивался с таким?
@allure.step('Создаем сотрудника из справочника')
def add_employee_from_directory(self, employer, month):
self.log_element_state(element.CREATE_FROM_DIRECTORY_BTN)
self.click_to_element(element.CREATE_FROM_DIRECTORY_BTN)
self.find_element_by_text('span', employer).click()
self.click_to_element(element.ACCEPT_EMPLOYEE_BTN)
expected_value = self.get_attribute_js(element.EMPLOYEE_ROW, 'value', employer)
self.return_state_disabled_attribute(element.EMPLOYEE_ROW)
self.select_current_period(month)
assert employer in expected_value, \
f"{employer} != {expected_value}"
def click_to_element(self, locator, condition=EC.element_to_be_clickable, time=30):
elem = WebDriverWait(self.driver, time).until(condition(locator))
elem.click()
Ответы (1 шт):
Автор решения: Василий Волгин
→ Ссылка
Возможно, клик выполняется, но:
- Элемент перекрыт
- Не завершилась анимация
- iframe не переключен
- Клик выполняется слишком рано
Попробуй move_to_element
, is_displayed()
, ожидание модального окна.
Лиибо можно попробовать использовать крайний вариант через JS тыкнуть.
Пример:
self.driver.execute_script("arguments[0].click();", elem)