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

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

а другие локаторы что говорят?
https://chrome.google.com/webstore/detail/test-recorder-css-selecto/cajiblmjgnmllbkmlgcnkhafngdjfoci?utm_source=chrome-app-launcher-info-dialog

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

нельзя просто так взять и кликнуть по инвизибл элементу :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 лайк