подскажите, я нахожу элемент на web странице через мотодом find_elements_by_xpath(“my/xpath”), делаю проверку, что элемнет
.is_enabled() .is_displayed(), совершаю клик по элементу, но клика не происходит. Если делаю задержку в 1 сек. или более после всех проверок, тогда клик происходит.
Бьюсь с этой проблемой давно, пробовал различные пути workaround, но все это костыли, вокруг нерешенной проблемы.
На чьей стороне проблема, на стороне web части или geckodriver? Как решить это недорузумение?
Благодарю!)
А что значит клика не происходит? Какой Exception?
Возможно нужно подождать пока элемент станет кликабельным element_to_be_clickable
from selenium.webdriver.support import expected_conditions as EC
element = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "myXpath")))
element.click()
Благодрю за workaround.
Автотматизирую web приложение написанное на dojo, тоже первое что пришло в голову кликать javascript-ом, но в dojo кликнуть например по селекту js-ом не получается. Даже из консоли браузера.
В том то идело, что никакого exception не вываливается, просто происходит клик по мертвому елементу, который не дает событие.
на счет element = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, “myXpath”)))
element.click()
писал выше, что делаю проверку .is_enabled() .is_displayed()
это равноценные проверки, внутри element_to_be_clickable, вызываются эти методы
У меня была с ангуляром похожая проблема, это по-сути единственный выход как написать стабильные автотесты. Стандартными вэйтами вы этого не добьётесь, либо у вас на одно действие будет по 3 вэйта
Первый вариант, если вам требуется выбрать что-то из списка Вам не что не мешает использовать инпут который подтягивает значение из списка (send_keys + press_enter). Если используете другой сценарий, то попробуйте использовать такой фреймворк как Selene . Он помогает решить не только проблемы с wait ( проксирует указанное действие в течении указанного времени), но и ряд других проблем.