Всем привет. Столкнулся с проблемой, парочка тестов всегда красные из-за ошибки element click intercepted: Element is not clickable at point . Вся проблема в скролле.
Сначала решил использовать селенидовский метод :
$("").scrollIntoView(false).click(); , но почему то не всегда помагает.Возможно иногда нужна ему задержка.
Далле решил через js написать скролл :
Но через js, иногда тоже не срабатывает. Все из-за очень быстрых тестов. Если поставить sleep (1000), проходит. Но ждать в каждом тесте 1сек, думаю плохая идея.
Я Selenide не использую, потому что пишу на C#, но у селениума есть явные ожидания (Explisit wait), почитайте про них, эти же ожидания под капотом у Selenide. Вы должны добавить эту ошибку в игнорируемые, я не знаю как это сделать, но скорее всего такая возможность есть. Думаю @asolntsev знает
Попробуйте использовать Condidtions Condition · Selenide User Guide
Вот тут описано про ожидания Selenium Wait – Implicit, Explicit and Fluent Waits
Это позволит ждать до тех пор пока исключение не перестанет появляться при wait until clickable, а потом произойдет клик, просто я не знаю как это сделать в Selenide
Конечно.
В селениде есть всё, что есть в селениуме.
Можно прямо так и написать: Selenide.Wait().until(ExpectedConditions.elementToBeClickable(By.xpath(""))).Click();
Но обычно это не нужно, т.к. elementToBeClickable на самом деле проверяет только то, что элемент видимые и enabled. А селенидовский метод click() и так это проверяет.
Я же говорю, не нужно это.
Селенид сам пытается кликнуть в течение 4 секунд, игнорируя любые исключения. А вот если после 4 секунд не получилось - тогда уже кидает ошибку.