Serenity BDD — Как перезагрузить элементы страницы с помощью pagefactory

у меня проблема с загрузкой элементов с помощью pagefactory:

@Findy(id = painelDeContole) 
private WebElementFacade painelDeControleBtn;

Хитрость в том,

Скриншот 1

в этом меню я должен сделать действие мыши на "... mais", чтобы открыть подменю, подобное этому: Скриншот 2

Но когда я вызываю painelDeControleBtn.isVisible(), он возвращает false. (Последнее изображение, второй значок) Мне нужен какой-то способ перезагрузить элемент страницы и действительно проверить, виден ли элемент после действия наведения мыши. Я уже искал способ сделать это внутри PageObject и WebElementFacade, но не нашел. Я хотел бы сохранить использование pagefactory, если это возможно.


person Lucas G    schedule 17.05.2017    source источник


Ответы (1)


Из-за того, как @FindBy загружает элементы, он может присутствовать на экране, но еще не отображаться, или может не дождаться появления элемента перед возвратом результата. Чтобы сделать это надежно, вы получите лучшие результаты с помощью динамического поиска, например.

$("#painelDeContole").isVisible();

or

$("#painelDeContole").waitUntilVisible();
person John Smart    schedule 17.05.2017
comment
Невозможно реализовать метод для получения локатора через отражение и перезагрузки экземпляра элемента? Если это возможно, и вы дадите мне подсказку, где это сделать внутри serenity-core, я был бы рад реализовать это и открыть запрос на включение :) - person Lucas G; 17.05.2017