На тестируемом сайте используется меню с подпунктами. Список с новыми элементами выпадает после наведения или клика на один из пунктов меню. Также в выпадающем списке могут быть элементы, при наведении на которые открываются дополнительные меню (и так далее).
Раньше, после того как юзер убрал курсор с элемента, выпадающее меню пропадало примерно через 1 секунду, теперь же в рамках улучшений меню скрываются практически моментально.
Но после этого появились проблемы с UI тестами (используем Java + Selenide/WebDriver + Firefox + TestNG).
В большом количестве тестов доступ к страницам как раз происходит через манипуляции с этим меню - либо после клика на пункт основного меню и сразу же клика на один из пунктов в под-меню, либо через множественные moveToElement/hover к пунктам меню, что находятся дальше.
Так вот, регулярно падает около 10-15 тестов, по причине NoSuchElementException для требуемого пункта меню, на скриншотах видно, что меню действительно скрыто на момент клика. Причем, падать могут как обращение к элементам в самых первых уровнях меню (после одного клика), так и в более дальних, когда нужно пройти цепочку moveToElement.
Насколько я понимаю, проблема в том, что фокус после hover (Selenide) или moveToElement (WebDriver) не сохраняется на требуемом элементе, в результате меню скрывается. Гуглил, нашел похожие проблемы у людей, но какого-нибудь решения найти не удалось. (вот наиболее близкая тема, которую удалось найти: Hover with native events on Windows is not persisted · Issue #2067 · SeleniumHQ/selenium-google-code-issue-archive · GitHub)
Перемещение к элементу с помощью Selenide делаю вот так:
elem.should(appear).hover();
С помощью WebDriver:
new Actions(getDriver()).moveToElement(getWebElement(by)) .build() .perform();
При клике на элемент сначала перемещаюсь к нему, только потом делаю клик.
Подскажите, пожалуйста, сталкивался ли кто-нибудь с подобной проблемой и как удалось решить?