t.me/atinfo_chat Telegram группа по автоматизации тестирования

При клике на кнопку выпадает ошибка : ElementNotVisibleException

Теги: #<Tag:0x00007f748727bac0> #<Tag:0x00007f748727b9f8> #<Tag:0x00007f748727b930>

Нужно кликнуть на кнопку , которая отображается при выпадании списка меню
Прописывал путь уже черз xpath ,css , id, всеравно выпадает ошибка element not visible
Есть подозрения что нужно использовать executor но как его применить я не разобрался
Можете помочь пожалуйста

а другие локаторы что говорят?

пробуйте, так же нужно ожидание на появление элемента (кстати в первую очередь)

нельзя просто так взять и кликнуть по инвизибл элементу :smile: . для начала вам нужно сделать его видимым. например сымитировав клик по меню чтобы вывалился его список.

1 Симпатия

Если клик на “О Выставке” ведет на какую то страницу, то тогда нужно иммитировать mouseHover и тогда уже кликать по нужной вам ссылке. Если же никуда не ведет, то нужно сделать клик сначала на “О Выставке”, можно дополнительно проверить что следующая ссылка в меню видна и потом уже на нее кликать.

О , ожидание есть . Я в основном тесте поставил на время вонючий thread.sleep между кликами
РЕБЯТА, вообщем я нашел решение , радуюсь как дурачок :

Actions builder = new Actions(driver);
builder.moveToElement(about).perform();
clickOnElement(place);

Но всеже я хочу узнать как использовать Javascriptexecutor
Напишите плиз кто шарит доступным языком

Доступнее некуда :smile:

Стандартный moveToElement из Actions не всегда подходит.
Бывает, что при движении мыши задеваются другие пункты меню и нужное подменю исчезает.
Для решения этой проблемы можно эмулировать MouseEvents для элемента.

    private WebElement mouseOver(WebElement element) {
    String code = "var fireOnThis = arguments[0];"
            + "var evObj = document.createEvent('MouseEvents');"
            + "evObj.initEvent( 'mouseover', true, true );"
            + "fireOnThis.dispatchEvent(evObj);";
    executeJavaScript(code, element);
    return element;
}
1 Симпатия